自己写的将ResultSet转为list对象的方法

1 import java.lang.reflect.InvocationTargetException;
2 import java.lang.reflect.Method;
3 import java.sql.ResultSet;
4 import java.sql.ResultSetMetaData;
5 import java.sql.SQLException;
6 import java.util.ArrayList;
7 import java.util.List;
8
9 /**
10 * 将ResultSet对象转换为List<Object>
11 * @author HHZ
12 */
13 public class ResultSetToObject
14 {
15 public static List<Object> turnToObject(ResultSet resultSet,
16 Class<?> objClass)
17 {
18 /**存储转化后的实体类*/
19 List<Object> listObjs = new ArrayList<Object>();
20
21 /**resultSet数据表中的字段名称*/
22 String[] columnNames = null;
23
24 /**resultSet数据表中对应字段的数据类型*/
25 String[] columnTypes = null;
26
27 try
28 {
29 if (resultSet == null || !resultSet.next())
30 {
31 return listObjs;
32 } else
33 {
34 ResultSetMetaData metaResult = resultSet.getMetaData();
35 int length = metaResult.getColumnCount();
36 columnNames = new String[length];
37 columnTypes = new String[length];
38
39 for (int i = 0; i < columnNames.length; i++)
40 {
41 columnNames[i] = metaResult.getColumnName(i + 1);
42 columnTypes[i] = metaResult.getColumnClassName(i + 1);
43 }
44
45 while (resultSet.next())
46 {
47 try
48 {
49 /*实例化实体类*/
50 Object obj = objClass.newInstance();
51
52 /*根据字段名调用实体类中的set方法*/
53 for (int j = 0; j < columnNames.length; j++)
54 {
55 Method method = objClass.getDeclaredMethod("set"
56 + upInitial(columnNames[j]),
57 paraTypeClass(columnTypes[j]));
58 method.invoke(obj, resultSet
59 .getObject(columnNames[j]));
60 }
61
62 listObjs.add(obj);
63
64 } catch (InstantiationException e)
65 {
66 e.printStackTrace();
67 } catch (IllegalAccessException e)
68 {
69 e.printStackTrace();
70 } catch (SecurityException e)
71 {
72 e.printStackTrace();
73 } catch (NoSuchMethodException e)
74 {
75 e.printStackTrace();
76 } catch (IllegalArgumentException e)
77 {
78 e.printStackTrace();
79 } catch (InvocationTargetException e)
80 {
81 e.printStackTrace();
82 }
83 }
84 }
85
86 } catch (SQLException e)
87 {
88 e.printStackTrace();
89 }
90 return listObjs;
91 }
92
93 /**
94 * 将首字母变为大写
95 * @param str
96 * @return
97 */
98 public static String upInitial(String str)
99 {
100 char[] chars = str.toCharArray();
101 chars[0] = Character.toUpperCase(chars[0]);
102 return new String(chars);
103 }
104
105 /**
106 * 字段的数据类型
107 * @param str
108 * @return
109 */
110 public static Class<?> paraTypeClass(String str)
111 {
112 if(str.equals("java.lang.String"))
113 {
114 return java.lang.String.class;
115 }else if(str.equals("java.lang.Integer"))
116 {
117 return java.lang.Integer.class;
118 }else if(str.equals("java.lang.Character"))
119 {
120 return java.lang.Character.class;
121 }else if(str.equals("java.lang.Double"))
122 {
123 return java.lang.Double.class;
124 }else if(str.equals("java.lang.Short"))
125 {
126 return java.lang.Short.class;
127 }else if(str.equals("java.lang.Byte"))
128 {
129 return java.lang.Byte.class;
130 }else if(str.equals("java.lang.Float"))
131 {
132 return java.lang.Float.class;
133 }else if(str.equals("java.lang.Boolean"))
134 {
135 return java.lang.Boolean.class;
136 }else if(str.equals("java.util.Date"))
137 {
138 return java.util.Date.class;
139 }
140 return null;
141 }
142 }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值