反射Update

来源:互联网 发布:谷笑爷 知乎 编辑:程序博客网 时间:2024/05/21 22:32
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=?.
         */
    }