Apace源代碼學(xué)習(xí)1-dbutil初學(xué)之一
關(guān)于dbutil的介紹,可以參照http://commons.apache.org/dbutils/,具體我就不多少了。
dbutil源代碼中主要分為三個包,dbutils、dbutils.handlers、dbutils.wrappers。我學(xué)習(xí)的順序也是一個包一個包來解決。
今天看的主要是dbutils.wrappers(從簡單的入手,呵呵)
1.dbutils.wrappers包---一些包裝方法
dbutil源代碼中主要分為三個包,dbutils、dbutils.handlers、dbutils.wrappers。我學(xué)習(xí)的順序也是一個包一個包來解決。
今天看的主要是dbutils.wrappers(從簡單的入手,呵呵)
1.dbutils.wrappers包---一些包裝方法
1.1SqlNullCheckedResultSet類
這個類的基本作用如下,檢查對db的操作的返回結(jié)果是否是null,可以根據(jù)自己的需要對Null的情況設(shè)自己的預(yù)設(shè)值.
這個類的設(shè)計思路:
設(shè)置常見field的私有成員變量
對每個field對應(yīng)getNullField()和setNullField()方法
同時設(shè)置一個HashMap<String, Method> nullMethods變量和一個靜態(tài)方法區(qū),這個方法主要用于將getNullField()和getField()相對應(yīng),key是“getField“ value是getNullField()。
這個類實現(xiàn)了InvocationHandler接口(可以現(xiàn)看下動態(tài)代理),
invoke()方法,獲取結(jié)果對象result,并判斷result是否是null,通過HashMap映射調(diào)用getNullField()方法。
1.2StringTrimmedResultSet類
這個類比上面的那個類要簡單很多,就是將ResultSet方法中的getString()和getObject()方法(如果獲取的是String類型)獲取的值,去除首位的空格。
ps:今晚看了一小部分,感覺有些代碼寫的很好,但是目前還不能從整體的去把握它,這個估計要全部看完之后才可以,到時候在回過頭看一遍,那個時候應(yīng)該能快很多,而且也應(yīng)該理解更深刻。。good night..
體會更深刻。
2.dbutils包
2.1DbUtils類
這個類中大量使用重載,想了一會會名詞,看了記憶力是越來越差阿。
這個類是一系列JDBC的幫助類,主要是關(guān)閉方法和加載驅(qū)動。Connection/ResultSet/Statement。
關(guān)閉方法分為三類:
一般的close()這種close()針對以上三個對象之一,先判斷是是否為null,如果不為null的話則調(diào)用對象自身的close方法。
closeQuietly()方法,該方法直接調(diào)用上面的close()方法,同時捕獲異常。
帶有commit的close方法或closeQuietly方法,這種方法中加如了conn.commit(),也就是手動處理了事務(wù)。應(yīng)該是預(yù)先調(diào)用了conn.setAutocommit(false);
好了,今天就看到這了,希望最近公司不忙。力爭下周看完它。。加油。
體會更深刻。