标签:
public void add(Object object) throws SQLException { ResultSet rs=null; PreparedStatement ps=null; Connection con=null; //获取表名 Class c= object.getClass(); String className=c.getName(); String declareName=className.substring(className.lastIndexOf(".")+1); //拼接sql语句开始 Field[] fields =c.getDeclaredFields(); StringBuilder s1=new StringBuilder("insert into "); s1.append(declareName); StringBuilder s2=new StringBuilder(" values("); for (int i = 0; i < fields.length; i++) { System.out.println(fields[i].getName()); if(i>0){ s2.append(","); } s2.append("?"); } s1.append(s2+")"); System.out.println(s1); //sql语句完成 try { con=JdbcUtils.getConnection(); ps=con.prepareStatement(s1.toString()); //进行循环比较来实现prepareStatement的setObject方法 //获取的是所有该类自己声明的方法 Method[]m= c.getDeclaredMethods(); for (Method method : m) { String mName=method.getName(); //这里挑出get方法 if(mName.startsWith("get")){ for (int i = 0; i < fields.length; i++) { //.equalsIgnoreCase() if(fields[i].getName().equalsIgnoreCase(mName.substring(3))){ ps.setObject(i+1, method.invoke(object)); } } } } ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally { JdbcUtils.close(rs, ps, con); } }
基本上利用类的字节码的反射的getName获取类型名 getDeclaredFields()方法获取该类型声明的参数 getDeclaredMethod()方法获取该类声明的方法名
来实现类通用的...
初学java......0.0
标签:
原文地址:http://www.cnblogs.com/lslqm520/p/5800684.html