ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

结果集处理器: BeanHandler

2022-11-03 13:07:00  阅读:149  来源: 互联网

标签:结果 处理器 BeanHandler


参数: 1.Connection conn: 连接对象 2.String sql: sql语句,参数用?代替 3.ResultSetHandler rsh: 结果集处理器,接口,必然传递实现类对象 实现类: 根据不同的方式处理ResultSet,返回不同结果 4.Object… params: 可变参数,传递参数列表,数组,不传参 作用: 给sql中?进行赋值的 BeanHandler: 返回指定类型的对象

@Test
    public void queryUserByUid() throws SQLException {
          
   
        /*
            结果集处理器: BeanHandler
            作用: 把查询结果的第一行,封装成指定类型的对象
            构造方法:
                public BeanHandler(Class clazz): 传递Class类型的对象
         */
        QueryRunner qr = new QueryRunner();
        String sql = "select * from users where uid=?";
        /*
             new BeanHandler<Users>(Users.class): 告诉它,把结果封装成什么类型的对象
         */
        Users user = qr.query(C3P0Util.getConnection(), sql, new BeanHandler<Users>(Users.class), "u001");
        System.out.println(user);
    }
public class BeanHandler<T> implements ResultSetHandler<T> {
          
    
    private final Class<T> type; 
    private final RowProcessor convert;

    public BeanHandler(Class<T> type) {
          
   
        this(type, ArrayHandler.ROW_PROCESSOR);
    }

    public BeanHandler(Class<T> type, RowProcessor convert) {
          
   
        this.type = type;
        this.convert = convert;
    }

    public T handle(ResultSet rs) throws SQLException {
          
   
        return rs.next() ? this.convert.toBean(rs, this.type) : null;
    }
}

// 1、BeanHandler<T>是泛型,创建对象的时候需要指定泛型,
// 2、有个Class类型的成员变量,public BeanListHandler(Class clazz): 传递Class类型的对象,告诉结果集处理器,List集合中存储的数据的类型
// 3、所以在new BeanHandler的时候把Class<T>写成User.class

标签:结果,处理器,BeanHandler
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有