日期:2014-05-16  浏览次数:20578 次

Commons DbUtils 源码阅读一

? 想起读源码了!

??主要是出于这几个方面的考虑:

??? 1)提高自己的编码及代码阅读能力和水平;

??? 2)学习大师们写代码所用到的设计模式以及思路。

? 选择阅读Dbutils主要有以下缘由:

??? 1)开源中国社区http://www.oschina.net/ ,站长红薯大哥数据的提取就是用的这个开源项目,并且省了很多映射,有较大的编码灵活性;

??? 2)项目不大,代码少,我能在短时间内看完。

? DbUtils主要是用来简化JDBC数据的各种操作 项目的使用范围以及如何使用我在这里就不说了,看看该项目所有代码的结构以及各类的说明:

org.apache.commons.dbutils

??????|__DbUtils :JDBC辅助方法集合,提供了一系列的JDBC API的静态方法供用户使用,比如数据库驱动的加载、Connection、Statement等资源的释放等等,该类线程安全。

??????|__QueryRunner :简化处理SQL查询以及与ResultSetHandler处理ResultSet

??????|__ResultSetHandler<T> :它的实现类借助于RowProcesser实现类将java.sql.ResultSet转换成其它对象,以下为它的一些具体实现类

????????????|__org.apache.commons.dbutils.handlers

????????????????????????|__AbstractKeyedHandler<K,V> ?

??????????????????????????????|__KeyedHandler?

?????????????????????????|__AbstractListHandler<T>

???????????????????????????????|__ArrayListHandler

???????????????????????????????|__ColumnListHandler

???????????????????????????????|__MapListHandler

?????????????????????????|__ArrayHandler

?????????????????????????|__BeanHandler<T>

?????????????????????????|__BeanListHandler<T>

?????????????????????????|__MapHandler

?????????????????????????|__ScalarHandler

??????|__QueryLoader :加载指定Properties的SQL映射到内存中并以Map返回

??????|__ProxyFactory :创建JDBC API接口的一些代理类,比如:java.sql.Connection、java.sql.Statement等等

java.util

????? |_Iterator<Object[]>

???????? |_ResultSetIterator

??????|__RowProcessor :定义了java.sql.ResultSet转变为其它对象的一些方法,在其实现类BasicRowProcessor中有具体的操作

????????????|__BasicRowProcessor ?????????????

??????|__BeanProcessor :匹配java.sql.ResultSet的列表到bean的属性,相当于做一些Hibernate XML文件映射之类的工作!

java.lang.reflect

????? |_InvocationHandler

?????????|_org.apache.commons.dbutils.wrappers:代理实例的调用处理程序 ,做一些空值数据的处理????? ????????????????? |__StringTrimmedResultSet

????????????????? |__SqlNullCheckedResultSet?????????

???代码的结构算是理清楚了,下一步,对这个结构里的每一个内容和结构来进一步的查看,正式要开始罗,期待!?

?