`

JDBC:如何将resultset的信息自动封装到pojo里面

    博客分类:
  • Java
阅读更多

不多说了  直接上代码 

Java代码  收藏代码
  1. public static List resultSetToList(ResultSet rs) throws java.sql.SQLException{  
  2.        if(rs==null){  
  3.            return null;  
  4.        }  
  5.   
  6.        ResultSetMetaData md = rs.getMetaData();  
  7.        int columnCount = md.getColumnCount();  
  8.   
  9.        List list = new ArrayList();  
  10.        Map rowData;  
  11.        while (rs.next()){  
  12.            rowData = new HashMap(columnCount);  
  13.            for (int i=1; i<=columnCount; i++){  
  14.                  
  15.                    rowData.put(md.getColumnName(i),rs.getObject(i));  
  16.                  
  17.                 
  18.            }  
  19.            list.add(rowData);  
  20.        }  
  21.        return list;  
  22.    }  

首先将ResultSet封装成list  而每条记录对应一个实体Map 
Java代码  收藏代码
  1. import java.lang.reflect.InvocationTargetException;  
  2. import java.lang.reflect.Method;  
  3. import java.util.HashMap;  
  4. import java.util.Iterator;  
  5. import java.util.Map;  
  6. /** 
  7.  * <p>Title:属性封装类</p> 
  8.  * 
  9.  * <p>Description: </p> 
  10.  * 
  11.  * <p>Copyright: Copyright (c) 2008</p> 
  12.  * 
  13.  */  
  14. public class BeanUtils {      
  15.     /** 
  16.      *  
  17.      * @param bean 需要封装的vo 
  18.      * @param map 需要转换的map 
  19.      * @return 已经封装好数据的vo(object) 
  20.      */  
  21.     public static  Object MapToBean(Object bean, Map map) {  
  22.         Map methods = new HashMap();  
  23.         Method m[] = bean.getClass().getMethods();  
  24.         for (int i = 0; i < m.length; i++) {  
  25.             Method method = m[i];  
  26.             String methodName = method.getName().toUpperCase();  
  27.             methods.put(methodName, method);  
  28.         }  
  29.   
  30.         Iterator it = null;  
  31.         String key = "";  
  32.         it = map.keySet().iterator();  
  33.         while (it.hasNext()) {  
  34.             key = (String) it.next();  
  35.             String name = "GET" + key.toUpperCase();  
  36.             if (methods.containsKey(name)) {  
  37.                 Method setMethod = (Method) methods.get("SET" + key.toUpperCase());  
  38.                 try {  
  39.                     if(setMethod!=null){  
  40.                         Object[] obj=null;  
  41.                         obj=new Object[1];  
  42.                         obj[0]=map.get(key);  
  43.                     setMethod.invoke(bean, obj);  
  44.                     }  
  45.                     else{  
  46.                         continue;  
  47.                     }  
  48.                 } catch (IllegalAccessException e) {  
  49.                     e.printStackTrace();  
  50.                 } catch (InvocationTargetException e) {  
  51.                     e.printStackTrace();  
  52.                 }  
  53.   
  54.             }  
  55.         }  
  56.         return bean;  
  57.     }  
  58. }  


此方法是将上面查到的list作为参数  然后再将其list里面的map转换成相对性的pojo 

假设查询的是student表  与之对应的pojo是Student类  那么调用方法如下: 

首先查询数据  获取到resultset  
然后 
List  retultList=resultSetToList(resultset); 
遍历retultList  将list里面的Map都转换成pojo 
Student stu=(Student)BeanUtils.MapToBean(new Student(),(Map)retultList.get(0)); 

注意:查询出来的字段名要和pojo中的属性名相同  若查询出age字段 pojo中需有getAge和setAge方法  方法名大小写不限 

 

转自:http://hfkiss44.iteye.com/blog/568525

分享到:
评论
3 楼 dizh 2014-08-12  
写的很好~~~
2 楼 yuetao31512 2012-12-06  
setMethod.invoke(bean, obj); 
入参类型不匹配报错怎么办?我就遇到了这个问题
1 楼 crabboy 2011-05-11  
goodgoodgood

相关推荐

    java反射封装结果集内容到pojo

    当我们从数据库读出数据得到ResultSet或RowSet的时候,我们的做法是遍历结果集,然后封装到pojo里面,再封装到List,那么,每次封装是不是很麻烦呢,前段时间小弟看了下反射的东西,试着写了个类,目的在于方便封装...

    Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData

    Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap 1.数据类型 2.封装通用增删改 2.1.封装JDBCUtil 2.2.封装Dao通用增删改 2.3.测试 3.ResultSet...

    greenplum.jar 官方JDBC驱动

    ResultSet rs = st .executeQuery("SELECT * FROM core_db.analysis_user limit 100"); while (rs.next()) { System.out.println(rs.getString(1)); } rs.close(); st.close(); } catch (Exception e) { e....

    Dbutils项目实例

    DBUtils封装了对JDBC的操作 简化了JDBC操作 可以少写代码 org apache commons dbutils DbUtils 关闭链接等操作 QueryRunner 进行查询的操作 org apache commons dbutils handlers ArrayHandler :将ResultSet中第一...

    如何从 Java 存储过程将 JDBC ResultSet 作为 Ref Cursor 返回.doc

    本文档演示如何从 Java 存储过程将 JDBC ResultSet 作为 REF CURSOR 返回。JDBC ResultSet 是一个表示数据库的数据表,通常通过执行查询数据库的语句产生该表。REF CURSOR 是 PL/SQL 中相应的类型。Java 存储过程的...

    Commons-dbutils1.7 jar包.rar

    简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改查了。代码看着也很简洁。 例如: 增删改查使用的类:QueryRunner类+...

    greenplum.jar 官方驱动 JDBC

    import java.sql.ResultSet; import java.sql.Statement; public class Greenplum { public static void main(String args[]) throws Exception{ Class.forName("com.pivotal.jdbc.GreenplumDriver"); ...

    javaBean自动生成工具,jdbc连接池封装

    根据mysql数据库自动生成对应的javabean,附带jdbc连接池工具类封装,支持Resultset转List javabean对象

    SQLite数据库 sqlitedll库文件 sqlite驱动JAR包 sqlite工具

    二、将下载到的包解压后得到jar包放到%JAVA_HOME%\lib下,并且将其添加到ClassPath系统环境变量中。一定要保证在类路径ClassPath中有该jar包,并且保证在JAVA库路径JAVA Library Path中有本地库Native Library(\...

    实用的jdbc的工具类,提供多种ResultSet的转化方法

    次类对ResultSet进行封装,可以将其转化为List,Map,BO等

    4. 尚硅谷_佟刚_JDBC_通过 ResultSet 执行查询操作.wmv

    JavaJDBC的视频,通过ResultSet执行查询操作,视频详细描述了如何使用ResultSet执行查询的案例。

    jdbcJDBC主要接口、类

    JDBC主要接口、类: Connection:封装连接 DriverManager:管理驱动 Statement:封装SQL语句 PreparedStatement:封装SQL语句 ResultSet:封装结果集

    JDBC编程resultset游标控制

    JDBC通信原理 JDBC驱动类型 JDBC构成 JDBC程序5步走 滚动的结果集 可更新的结果集 SQL数据类型对应的Java类型 事务及批量处理 行集、连接池、LDAP

    jdbcObjectMapper:JDBC ResultSet对象映射器

    用户,公司)中选择的,并且这些列在一个查询结果中:id,payment_date,payment_amount,user_id,user_name,user_surname,company_id,company_name 并且我们需要将这些列映射到Payment对象。 默认情况下,我们...

    Spring Data JDBC与JDBC的区别

    JDBC规范   java.sql和javax.sql两个包中的类与接口(天龙八部):  DataSource:数据源 ... ResultSet:结果集,封装了多条记录  JDBC数据库连接池/Connection Pool  DBCP:apache tomcat内置  

    JDBC基础教程之ResultSet对象.doc )

    JDBC基础教程之ResultSet对象.doc )

    JDBC数据库常用操作封装(升级版)

    看前面的那一版注释,加了同步,线程安全,封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,...

    struts JDBC 实现简单的增删改查、登录注册

    /** * @param args * 查询功能 */ public ArrayList&lt;UserBean&gt; query(UserBean ... ResultSet rs = null; String quersql = null; ArrayList&lt;UserBean&gt; listUserBean = new ArrayList(); try {

    删掉,复制别人东西,怕侵权,原本只想收藏的

    客服看到给我删掉,我只是想收藏这篇文章,这是复制别人的,怕侵权。...相对而言,Hibernate对JDBC的封装程度还是比较高的,我们已经不需要写SQL,只要使用HQL语言就可以了。 使用Hibernate进行编程有以下好处:

    自己封装的JDBC工具类源码

    最近刚学习了JDBC,最后封装了一段简单的工具类,主要功能有: 1、执行sql语句返回单条查询结果; 2、执行查询语句sql返回结果集; 3、执行数据的插入,修改,删除; 4、执行批处理; 5、调用存储过程; 6、...

Global site tag (gtag.js) - Google Analytics