直接调用Field 中的 set方法 会说 无法将Bigdemic 的数据直接赋给 int类型
看来对于 Object 还是不尽熟悉 只是简单的将中间的几个属性 进行了 简单处理 希望各位看官能给予帮助
1 public static List smallHib(String URL, String sql) throws Exception { 2 //URL 所反射的类 3 Class c = Class.forName(URL); 4 //调用方法查询后的结果集 5 ResultSet rs = new testOra2().select(sql); 6 //该方法可以将ResultSet中的列名取出 7 ResultSetMetaData rsmd = rs.getMetaData(); 8 //获得列的数量 9 int count = rsmd.getColumnCount(); 10 List list = new ArrayList(); 11 while (rs.next()) { 12 //创建一个c 的实例 13 Object o = c.newInstance(); 14 for (int i = 1; i <= count; i++) { 15 //根据列名 转换为 set 方法的名字 16 String name=rsmd.getColumnName(i).toLowerCase(); 17 //获取属性 18 Field f = c.getDeclaredField(name); 19 Method m =c.getMethod("set"+name.substring(0,1).toUpperCase()+name.substring(1), 20 f.getType()); 21 //截取类型 22 String temp = f.getType().toString(); 23 temp=temp.substring(temp.lastIndexOf(".")+1); 24 25 26 //根据类型不同调用不同的方法 27 if(temp.equals("int")){ 28 m.invoke(o,rs.getInt(i)); 29 continue; 30 }else if(temp.equals("Date")){ 31 m.invoke(o, rs.getDate(i)); 32 continue; 33 } 34 m.invoke(o,rs.getString(i)); 35 36 37 38 } 39 list.add(o); 40 } 41 42 closeAll(); 43 return list; 44 }
时间: 2024-10-13 15:58:26