[Java教程]ResultSet 转为 List或者JavaBean
0 2014-04-22 13:00:13
一、将ResultSet结果集转换为List,其中每条记录信息保存为Map放到List中,方法如下:public static List> toMap(ResultSet rs) throws SQLException { if(rs == null) return null; List> result = new ArrayList>(); //获取结果集结构信息,字段类型、数量 ResultSetMetaData rsmd = rs.getMetaData(); int cols = rsmd.getColumnCount(); Map map = new HashMap(); while(rs.next()) { map = new HashMap(); //将一条数据库表记录转为map存储 for (int i = 1; i <= cols; i++) { map.put(rsmd.getColumnName(i), rs.getObject(i)); } result.add(map); } return result; }
二、将ResultSet结果集中的一条记录转换为JavaBeanpublic static T toBean(ResultSet rs, Class type) throws Exception { if(rs == null) return null; //获取class中定义的属性 Field[] fields = type.getDeclaredFields(); //创建java对象 T obj = type.newInstance(); //循环对象属性值 for(Field f : fields) { Object value = rs.getObject(f.getName()); if(value != null) { //oracle中number类型对应java中的BigDecimal类型。 if(value.getClass() == BigDecimal.class && (f.getType() == Integer.class || f.getType() == int.class)) { value = ((BigDecimal)value).intValue(); } f.setAccessible(true); f.set(obj, value); } } return obj; }
以上方法比较简陋,org.apache.commons.dbutils实现了较为实用的BasicRowProcessor.toBean(ResultSet rs, Class type)方法,主要改进为:
1、可以动态添加(属性-->列)映射关系,例:javaBean中的desc属性对应resultSet中的t_desc列。
2、属性默认值的填充,创建javaBean后如果在resultSet没有找到对应的值,可设置默认值。
3、dbutils中使用的是内省方式,而不是直接使用反射。
本文网址:http://www.shaoqun.com/a/89202.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
JAVA
0