利用java反射把ResultSet转换成List

来源:互联网 发布:秦皇岛广电网络 编辑:程序博客网 时间:2024/06/02 14:42

来源www.blogjava.net/wanghl259748/articles/277261.html

Code:
  1. public List toList(ResultSet rs,Class cls)   
  2. {   
  3.         List list = new ArrayList();   
  4.         try  
  5.         {                
  6.             //获取数据库表结构   
  7.             ResultSetMetaData meta=rs.getMetaData();   
  8.             Object obj=null;   
  9.             while(rs.next())   
  10.             {   
  11.                 //获取formbean实例对象   
  12.                 obj=Class.forName(cls.getName()).newInstance();   
  13.                 //循环获取指定行的每一列的信息   
  14.                 for(int i=1;i<=meta.getColumnCount();i++)   
  15.                 {   
  16.                     //当前列名   
  17.                     String colName=meta.getColumnName(i);   
  18.                     //将列名第一个字母大写(为什么加+""呢?为了把char类型转换为String类型。replace的参数是String类型。)   
  19.                     colName=colName.replace(colName.charAt(0)+""new String(colName.charAt(0)+"").toUpperCase());   
  20.                     //设置方法名   
  21.                     String methodName="set"+colName;   
  22.                     //获取当前位置的值,返回Object类型   
  23.                     Object value=rs.getObject(i);   
  24.                     //利用反射机制,生成setXX()方法的Method对象并执行该setXX()方法。   
  25.                     Method method=obj.getClass().getMethod(methodName, value.getClass());   
  26.                     method.invoke(obj, value);                
  27.                 }   
  28.                 list.add(obj);   
  29.             }   
  30.         }catch(Exception ex)   
  31.         {   
  32.             ex.printStackTrace();   
  33.         }finally{   
  34.             return list;   
  35.         }   
  36.   }

    出于对反射机制的兴趣收藏此代码,觉得以后肯定能用到!