1.手搓简单SQL增删改查框架-更改
1.1创建简单类,并使用泛型类,这里可能使用到之间写的三篇知识的内容,如果不了解的小伙伴可以去
当然,前提是必须要把数据库相关连接弄好,这里会专门出一篇 java之jdbc
现在咱们继续手搓框架开始叭!
由于上一篇的【手搓简单SQL增删改查框架-插入】准备工作已经完成,自定义的三个注解已经可以满足我们的需求,所有这里前期不在准备,现在直接开始实现完成一个
通用的 更改sql语句 ,是针对所有数据库表都通用。
1.2 创建单独的dao
当然,你也可以续用上一篇声明的dao
public class CurrencyDao<T> { }
那么这里为省方便就直接继续使用上一篇文章定义好的dao。
也会继续续用上一篇的userdao、以及实体类、以及测试类
1.3 手搓!!
//通用的更改方法,针对所有的表都有用
public int Updata(T t) throws Exception{
//依然是一个拼凑语句的过程 updata 表名 set 列名=列值,列名=列值,... where id=?
StringBuffer updata = new StringBuffer("update ");
//通过反射获取类对象
Class<?> aClass = t.getClass();
String simpleName = aClass.getSimpleName();
//依然要判断类名与表名是否一致
TableName annotation = aClass.getAnnotation(TableName.class);
//拿到已获取到的注解value值判断
if(annotation != null){
simpleName = annotation.value();
}
//拼接表名+set
updata.append(simpleName + " set ");
String where = " where ";
//获取列名
Field[] declaredFields = aClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
declaredField.setAccessible(true);
//获取属性类名
String name = declaredField.getName();
//这里通过注解获取主键id,为拼接where后条件做准备
TableId annotation2 = declaredField.getAnnotation(TableId.class);
if(annotation2 != null){
String id = annotation2.value();
//继续获取属性
Object v = declaredField.get(t);//表层理解,拿到与id对象的列值
where = where+id+"="+v;//随后拼接在where 后面
continue;
}
//依然利用注解判断属性类名是否与列名一致
TableFiele annotation1 = declaredField.getAnnotation(TableFiele.class);
if(annotation1 != null){
name = annotation1.value();
}
Object v = declaredField.get(t);
//拼接set后的列名与列值
updata.append(name + "=" + "'" + v + "'" + ",");
}
//截取字符串,这里从0索引处,截取到最后的逗号(当然,不包含逗号)
String substring = updata.toString().substring(0, updata.lastIndexOf(","));
substring = substring + where;
// 调用jdbc数据库运行sql语句
Connection connection = DButils.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(substring.toString());
int i = preparedStatement.executeUpdate();
return i;
}
1.4 现在进行测试
public static void main(String[] args) throws Exception {
UserTable userTable = new UserTable();
userTable.setUser("究极·致之术");
userTable.setPass("666666");
userTable.setMoney(99.9);
userTable.setId(90);
UserDao userDao = new UserDao();
int insert = userDao.Updata(userTable);
System.out.println(insert);
}
运行结果:
success!!!
运行前:
运行后:
以上便是ORM框架中的SQL语句更改,如有漏缺请在下方留言告知,我会及时补充
标签:java,String,UPDATA,userTable,updata,declaredField,SQL,where From: https://www.cnblogs.com/9--1/p/17624333.html