DbUtils(一) 结果集概览

      记录自己对DbUtils的学习和了解

      我感觉Dbutils用的最多的就是对查询结果集的处理,就以这个开始了解Dbutils库。

      查看源代码发现结果集的转换主要用于query,insert,insertBatch方法。

// 仅仅列出QueryRunner类的相关代码,其他略过
//-----------源码1 query方法 ------------------
    stmt = this.prepareStatement(conn, sql);
    this.fillStatement(stmt, params);
    rs = this.wrap(stmt.executeQuery());
    result = rsh.handle(rs); // 处理结果集

//-----------源码2 insert方法 ------------------
    stmt = conn.prepareStatement(sql, tatement.RETURN_GENERATED_KEYS);
    this.fillStatement(stmt, params);
    stmt.executeUpdate();
    ResultSet resultSet = stmt.getGeneratedKeys();
    generatedKeys = rsh.handle(resultSet); // 处理结果集

//-----------源码3 insertBatch方法 ------------------
    ResultSet rs = stmt.getGeneratedKeys();
    generatedKeys = rsh.handle(rs); // 处理结果集

      对ResultSet的转换主要围绕两个接口展开(ResultSetHandler<T> RowProcessor)。

      1、ResultSetHandler<T> ,关系图如下:

      接口 ResultSetHandler 只有一个需要实现的方法 handle(ResultSet rs),我的理解这个方法是处理结果集的一个入口,每个结果集转换类都在自己的 handle 方法中处理自己的事情,这个可从前面的源码1、2、3中看出来,都是调用实现类的handle方法,再返回结果。

      ResultSetHandler  的实现类(结果集转换类)在 handle 方法中实现对结果集的处理,大部分会涉及到另一个接口 RowProcessor 及其实现类 BasicRowProcessor

      2、RowProcessor,关系图如下:

      RowProcessor 接口有4个需要实现的方法,具体用途可以很直观的从方法名中看出来。这几个方法都在结果转换类的 handle 方法中调用。需要注意如果需要将结果集转换为Bean,那么还会涉及到一个类 BeanProcessor 的使用。

      3、ResultSetHandler 和 RowProcessor 的关系

      

      图虽然有点乱,凑合看也能看清楚。大部分的结果集都持有一个 RowProcessor 接口的引用。需要注意的是 ArrayHandler 这个类,因为其他类 RowProcessor 的引用都是从这个类获取的,这个类建立了 RowProcessor 实现类 BasicRowProcessor 的对象。

      需要注意其中的3个抽象类(AbstractKeyedHandler、AbstractListHandler、BaseResultSetHandler),它们的派生类才是可以使用的结果转换类。根据文档的说明,如果官方提供的这些转换类都不能满足你的要求,可以通过继承 BaseResultSetHandler 实现自己的结果集转换类。

时间: 2024-11-03 05:27:57

DbUtils(一) 结果集概览的相关文章

DbUtils(二) 结果集实例

单行数据处理:ScalarHandler    ArrayHandler    MapHandler    BeanHandler 多行数据处理:BeanListHandler    AbstractListHandler(ArrayListHandler MapListHandler ColumnListHandler) AbstractKeyedHandler(KeyedHandler BeanMapHandler) 可供扩展的类:BaseResultSetHandler Dbutils使用

使用 dbutils 的结果集包装类 StringTrimmedResultSet

1.功能 StringTrimmedResultSet 的功能是去掉结果集中数据的前后空格,这个方法是在取结果的时候处理. 2.使用 一般在新建 QueryRunner 对象的时候使用: QueryRunner run = new QueryRunner(){ protected ResultSet wrap(ResultSet rs) { return StringTrimmedResultSet.wrap(rs); } }; //------------------------或者-----

DBUtils使用技巧

BbUtils(一) 结果集概览:http://www.cnblogs.com/myit/p/4269165.html DbUtils(二) 结果集实例:http://www.cnblogs.com/myit/p/4272824.html#3661545

DbUtils(二)

转自:http://www.cnblogs.com/myit/p/4272824.html 单行数据处理:ScalarHandler    ArrayHandler    MapHandler    BeanHandler 多行数据处理:BeanListHandler    AbstractListHandler(ArrayListHandler MapListHandler ColumnListHandler) AbstractKeyedHandler(KeyedHandler BeanMap

DBUtils学习

1.       DBUtils是JDBC的简单封装,可以和JDBC混合使用. 2.       DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:必须满足JavaBean的规范,其次Bean的getter与setter方法的名字与结果集的列名一一对应,而不要求JavaBean的私有成员与表结果集列名一一对应. 比如: person表中有个字段叫:address,那么对应的JavaBean的Person类中必须有getAddress和setAddress两个方法,而Person类

Apache Commons DbUtils使用手册

Apache Commons DbUtils使用手册 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.介绍 DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是在JDBC的基础上做了一层封装,主要是对结果集的封装,可以直接将查询出来的结果集封装成JavaBean,旨在简化JDBC代码混乱与重复.JDBC代码开发,存在很多难点:1)操作过程复杂,代码操作一个模式,大量的重复.2)结果集难以处理.3)到处都强制检查SQLExcepti

apache commons 之 DbUtils简介

apachecommons dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,对传统操作数据库的类进行二次封装,可以把结果集转化成List. 目前最新的版本是1.6. 官网地址为:http://commons.apache.org/proper/commons-dbutils/ DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味.最容易出错的一大部分工作. 在使用DB

javaweb笔记全套

Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Project) 3) 建包 建类 2. 快捷键 alt + / : 代码自动补齐,需要配置的 打开preferences(首选项), 搜keys,打开快捷键配置面板 搜 alt+/ ,取消绑定 搜 content assist ,取消原先的绑定,配置成alt+/ ctrl+1: 错误自动修复, 注意,

javaweb笔记分享

Lesson 1 一.eclipse工具的使用 1. java代码的位置 1) 选择工作空间 workspace  选择一个文件夹存放程序(代码) 不要用中文和空格 2) 新建一个java 工程(Project) 3) 建包 建类 2. 快捷键 alt + / : 代码自动补齐,需要配置的 打开preferences(首选项), 搜keys,打开快捷键配置面板 搜 alt+/ ,取消绑定 搜 content assist ,取消原先的绑定,配置成alt+/ ctrl+1: 错误自动修复, 注意,