Commons-dbUtils开发应用和研究(七)

xiaoxiao2023-11-21  13

 

此类和上篇的相同,不过此类使用反射机制实现相同的原理吧,^_^

  O(∩_∩)O~~一刻

 

火车上两个人面对而坐,问:“抽烟吗?”答:“不抽。”问:“喝一杯吗?”答:“不喝。”问:“这是我的女儿。”答:“我不玩女人。

 

开始开发,高兴的工作哦

package cn.com.huawei.opensource.common.dbutils;

import java.lang.reflect.Field;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.Collection;import java.util.logging.Logger;

import org.apache.commons.dbutils.ResultSetHandler;/** *  * @author bailonggang * 2009-2-26 * 下午11:55:16 */public class CustomMapListResultSetHandler implements ResultSetHandler{ private static Logger logger=Logger.getLogger(CustomMapListResultSetHandler.class.getName());    private Class cls ; public CustomMapListResultSetHandler(Class cls) {  this.cls=cls; } /**  *   */ public Object handle(ResultSet rs) throws SQLException {

       得到数据集的元数据对象的        ResultSetMetaData meta=rs.getMetaData();

     得到数据集合的列数的        int cols=meta.getColumnCount();

存储列名称信息        String[] titles=new String[cols];        for (int i = 0; i < titles.length; i++) {

   获取列的名称的哦   titles[i]=meta.getColumnName(i+1);  }

         存储查询的对象集合        Collection<Object> col=new ArrayList<Object>();        while(rs.next())        {         try{

       使用反射常见一个是对象的实例        Object o=cls.newInstance();        for (int i = 0; i < titles.length; i++)        {

          得到响应的字段         Field field=cls.getDeclaredField(titles[i]);         try {

         设置可以访问类的私有属性          field.setAccessible(true);

          获取列的数值偶          Object value=rs.getObject(i);

          此处可以使用反射机制中Method实现比较麻烦所以使用Field的方法实现          field.set(o, value);         } catch (Exception e) {          logger.info("set the class "+cls.getName()+" property "+field.getName()+" failure :"+e.getMessage());             e.printStackTrace();         }   }        col.add(o);         }catch(Exception ex)         {          logger.info("the exception occur "+ex.getMessage());          ex.printStackTrace();         }        }   return col; }   }

相关资源:commons-dbutils.jarv1.6官方免费版
转载请注明原文地址: https://www.6miu.com/read-5011376.html

最新回复(0)