關于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..
體會更深刻。