一、结构介绍

高层结构图:

wrappers包:

handlers包(部分):

二、功能介绍

commons.dbutils是一个对JDBC操作进行封装的类集,其有如下几个优点:

(1)没有可能的资源泄漏,避免了繁锁的JDBC代码

(2)代码更整洁

(3)从ResultSet自动生成JavaBeans属性

(4)无其他依赖包

三、基本使用

基本用到的类有:QueryRunner、ResultSetHandler及其子类等

QueryRunner -- 执行查询的类,可以执行SELECT、INSERT、UPDATE、DELETE等语句,QueryRunner用ResultSetHandler的子类来处理ResultSet并返回结果;而包提供的ResultSetHandler子类使用RowProcessor的子类来处理ResultSet中的每一行;RowProcessor的默认实现为BasicRowProcessor;BeanProcessor不是RowProcessor,可以看作一个工具类

ResultHandler及其子类 -- 实现了Object handle(ResultSet rs) throws SQLException方法

AbstractListHandler -- 返回多行List的抽象类

ArrayHandler -- 返回一行的Object[]

ArrayListHandler -- 返回List,每行是Object[]

BeanHandler -- 返回第一个Bean对象

BeanListHandler -- 返回List,每行是Bean

ColumnListHandler -- 返回一列的List

KeyedHandler -- 返回Map,具体见代码

MapHandler -- 返回单个Map

MapListHandler -- 返回List,每行是Map

ScalarHandler -- 返回列的头一个值

代码:

关于wrappers包:

在新建QueryRunner时,覆盖父类的方法wrap

四、扩展

1.RowProcessor接口

2.ResultSetHandler接口

更多相关文章

  1. Android中RecyclerView的item中控件的点击事件添加删除一行、上
  2. Android Studio中如何编写JNI代码及编译so库
  3. 编译Android4.3内核源代码
  4. Java se之静态代码块、代码块、构造函数执行顺序问题
  5. Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
  6. 编写自己的代码库(javascript常用实例的实现与封装)[转]
  7. 一篇不错的Android Audio架构代码梳理总结
  8. demo_代码注册广播接受者_Service
  9. Android学习笔记--《第一行代码Android》273页代码解密

随机推荐

  1. redis集群教程(二)
  2. 由浅入深,走进Python装饰器-----第五篇:
  3. SharePoint 解决方案:如何获取Library或者
  4. 希尔排序就这么简单
  5. Druid数据库连接池就是这么简单
  6. Ruby和Python哪个更强大?学习分析
  7. Java面试题全集(12)
  8. 面试官:什么是CSRF?(你的钱为什么被转走,这篇
  9. 2020年5A PMP 经验分享
  10. 静态链表