首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-09-03 
自己写的将ResultSet转为list对象的方法1 import java.lang.reflect.InvocationTargetException2 import

自己写的将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 }

热点排行