通过反射去修改数据库中表的数据,代码太多,但是复用性比较大

public static boolean update(Object obj){  
boolean result=true;  
Connection conn=null;  
PreparedStatement pstmt=null;  
Class c=obj.getClass();  
String className=c.getSimpleName();  
String sql="update t_"+className+" set ";  
String sql2="";  String sql3=" where ";    
try{  //获取所有的属性  
Field[] fs=c.getDeclaredFields();  
//获取主键的名字  Field fid=c.getDeclaredField("id");  
for (Field f : fs) {  f.setAccessible(true);  
Object value=f.get(obj);    
//判读属性是否为主键  
if(f.getName().equals(fid.getName())){  
if(value instanceof String){  
    sql3 += f.getName()+"='"+value+"'"; 
 }else{  sql3 +=f.getName()+"="+value;  
    }  
}else{   
    //非主键属性  
    if(value instanceof String){  
        sql2 += f.getName()+"='"+value+"'"+",";  
    }else{  
        sql2 +=f.getName()+"="+value+",";  }  
        }    
 }  
//将最后一个,截取掉  
sql2=sql2.substring(0,sql2.length()-1);  
sql=sql+sql2+sql3;  
conn=DBUtils.getConnection();  
System.out.println(sql);  
pstmt=conn.prepareStatement(sql);  
pstmt.executeUpdate();    
}catch(Exception e){  
e.printStackTrace();  
}    
return result;    
}

全部评论
emm... 要不要学学排版?
点赞 回复 分享
发布于 2018-09-20 15:53

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务