最近有幸用到apache Commons 下的DbUtils组件,进而研究了一下其源码,现把阅读过程中的一些感想记录下来,以供参考!!!
一:介绍
Commons Dbutils 是一个操作数据库的组件,原则上这不能说是一个持久层框架,它提供了一些Jdbc的操作封装来简化数据查询和记录读取操作。如果大家需要其源码的话,可以通过以下地址下载:http://commons.apache.org/dbutils/index.html
二:代码结构
Commons Dbutils 主要包括3个package:
org.apache.commons.dbutils //JDBC 辅助方法集合,提供了一系列的 JDBC API 的静态方法供用户使用,比如数据库驱动的加载、
Connection、Statement 等资源的释放等等,该类线程安全。
org.apache.commons.dbutils.handlers // 主要包括把resultset对象里数据转换成其他object类,如map、bean、list等
org.apache.commons.dbutils.wrappers //主要包括代理实例的调用处理程序,做一些空值数据的处理
我们来看看项目里面的结构以及具体说明
org.apache.commons.dbutils 包
|__DbUtils:jdbc辅助方法集合,线程安全
|__ResultSetHandler<T>:转换ResultSets对象 为其他Object 接口,下面为它的一些具体实现类
|__org.apache.commons.dbutils.handlers包
|__AbstractKeyedHandler<K,V>:把ResultSet里面数据转换为用Map存储,抽象类
|__BeanMapHandler:map里面value保存的是一个bean类,根据相应key获取bean数据
|__KeyedHandler;ResultSetHandler h = new KeyedHandler("id"); 根据类中保存的key(id),获取相应value
|__AbstractListHandler<T>:把ResultSet里面数据转换为用List存储,抽象类
|__ArrayListHandler:list为arrayList
|__ColumnListHandler:
|__MapListHandler:
|__ArrayHandler:把ResultSet里面数据转换为用Object[]存储
|__BeanHandler<T>:把ResultSet里面数据转换为用javaBean存储
|__BeanListHandler<T>:把ResultSet里面数据转换为用List存储,list里面对象为javaBean
|__MapHandler:把ResultSet里面数据转换为用Map存储
|__ScalarHandler:
|__AbstractQueryRunner
|__QueryRunner :基本查询类
|__AsyncQueryRunner
|__RowProcessor
|__BasicRowProcessor
|__BeanProcessor
|__ProxyFactory:代理类
|__QueryLoader
|__ResultSetIterator
org.apache.commons.dbutils.wrappers
|__SqlNullCheckedResultSet
|__StringTrimmedResultSet
代码的结构终于初步弄清楚了,下次将进一步的解读里面的代码!