public static void update(Object obj) throws Exception{
//修改
Class clazz=obj.getClass();
Method[] m=clazz.getMethods();
Field[] f=clazz.getDeclaredFields();
/*
* 拼接Sql
*/
String str1="";
String str3="";
for(int i=0;i<f.length;i++){
//str1=str1+","+f[i].getName()+"="+"?";
for(int j=0;j<m.length;j++){
String str2="get"+f[i].getName();
if(str2.equalsIgnoreCase(m[j].getName())){
str1=str1+f[i].getName()+"="+"'"+m[j].invoke(obj)+"'"+",";
if("getId".equalsIgnoreCase(m[j].getName())){
str3=m[j].invoke(obj).toString();
}
}
}
}
str1=str1.substring(0,str1.length()-1);
String sql="update "+clazz.getSimpleName().toLowerCase()+" set "+str1+" where id="+"'"+str3+"'";
System.out.println(sql);
Connection conn=DBUtils.createConn();
PreparedStatement pst=conn.prepareStatement(sql);
pst.execute();
/*
* update table set id=?,name=?,age=?,address=? where id=?.
*/
}
//修改
Class clazz=obj.getClass();
Method[] m=clazz.getMethods();
Field[] f=clazz.getDeclaredFields();
/*
* 拼接Sql
*/
String str1="";
String str3="";
for(int i=0;i<f.length;i++){
//str1=str1+","+f[i].getName()+"="+"?";
for(int j=0;j<m.length;j++){
String str2="get"+f[i].getName();
if(str2.equalsIgnoreCase(m[j].getName())){
str1=str1+f[i].getName()+"="+"'"+m[j].invoke(obj)+"'"+",";
if("getId".equalsIgnoreCase(m[j].getName())){
str3=m[j].invoke(obj).toString();
}
}
}
}
str1=str1.substring(0,str1.length()-1);
String sql="update "+clazz.getSimpleName().toLowerCase()+" set "+str1+" where id="+"'"+str3+"'";
System.out.println(sql);
Connection conn=DBUtils.createConn();
PreparedStatement pst=conn.prepareStatement(sql);
pst.execute();
/*
* update table set id=?,name=?,age=?,address=? where id=?.
*/
}
本文介绍了一种使用Java反射机制来更新对象属性的方法,并通过拼接SQL语句实现数据库记录的更新操作。此方法遍历对象的所有字段和方法,根据getter方法获取字段值并构建SQL更新语句。
2079

被折叠的 条评论
为什么被折叠?



