码迷,mamicode.com
首页 > 其他好文 > 详细

利用反射机制将ResultSet --》类的对象

时间:2015-07-06 21:26:42      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:

直接调用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     }

 

利用反射机制将ResultSet --》类的对象

标签:

原文地址:http://www.cnblogs.com/WgsKing/p/4625165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!