关于dbutil的介绍,可以参照
http://commons.apache.org/dbutils/,具体我就不多少了。
dbutil源代码中主要分为三个包,dbutils、dbutils.handlers、dbutils.wrappers。我学习的顺序也是一个包一个包来解决。
今天看的主要是dbutils.wrappers(从简单的入手,呵呵)
1.dbutils.wrappers包---一些包装方法
1.1SqlNullCheckedResultSet类
这个类的基本作用如下,检查对db的操作的返回结果是否是null,可以根据自己的需要对Null的情况设自己的预设值.
这个类的设计思路:
设置常见field的私有成员变量
对每个field对应getNullField()和setNullField()方法
同时设置一个HashMap<String, Method> nullMethods变量和一个静态方法区,这个方法主要用于将getNullField()和getField()相对应,key是“getField“ value是getNullField()。
这个类实现了InvocationHandler接口(可以现看下动态代理),
invoke()方法,获取结果对象result,并判断result是否是null,通过HashMap映射调用getNullField()方法。
1.2StringTrimmedResultSet类
这个类比上面的那个类要简单很多,就是将ResultSet方法中的getString()和getObject()方法(如果获取的是String类型)获取的值,去除首位的空格。
2.dbutils包
2.1DbUtils类
这个类中大量使用重载,想了一会会名词,看了记忆力是越来越差阿。
这个类是一系列JDBC的帮助类,主要是关闭方法和加载驱动。Connection/ResultSet/Statement。
关闭方法分为三类:
一般的close()这种close()针对以上三个对象之一,先判断是是否为null,如果不为null的话则调用对象自身的close方法。
closeQuietly()方法,该方法直接调用上面的close()方法,同时捕获异常。
带有commit的close方法或closeQuietly方法,这种方法中加如了conn.commit(),也就是手动处理了事务。应该是预先调用了conn.setAutocommit(false);
好了,今天就看到这了,希望最近公司不忙。力争下周看完它。。加油。
ps:今晚看了一小部分,感觉有些代码写的很好,但是目前还不能从整体的去把握它,这个估计要全部看完之后才可以,到时候在回过头看一遍,那个时候应该能快很多,而且也应该理解更深刻。。good night..
体会更深刻。