上一篇文章,說了一下具體的jdbc的用法,明確了jdbc操作資料庫增刪改查,使用JDBC進行開發,我們會發現冗餘代碼過多,為了簡化JDBC開發,常常採用apache commons組件一個成員:DBUtils。DBUtils就是JDBC的簡化開發工具包。需要項目導入commons-dbutils-1.6.jar才能夠正常使用DBUtils工具。
Dbutils三個核心功能介紹
QueryRunner中提供對sql語句操作的API.
ResultSetHandler接口,用於定義select操作後,怎樣封裝結果集.
DbUtils類,它就是一個工具類,定義了關閉資源與事務處理的方法
演示具體功能操作,增刪改查
上圖為增刪改的代碼,都是通過update實現的,那麼下面將通過query方法實現查詢,查詢方法並不難,關鍵是有很多結果處理集,這個需要熟練。
該方法的第三個參數是結果集的處理方式,需要傳遞給該方法的ResultSetHandler的接口實現類,該方法的返回值為泛型,說明我們傳入結果集處理方式<類型>時,那麼返回值就是什麼類型,返回值類型由結果集確定。如果傳入結果集時沒有明確泛型,那麼返回的類型按照object處理。
多種類型的結果集
下面演示ArrayHandler,這個處理式處理的結果就是會將查詢結果中的第一行存入數組中,並以數組的的形式返回,我們可以通過遍歷數組的方法獲取到
ArrayListHandler,這個結果集會將查詢結果的每一行,(不僅僅是第一行)封裝到數組中,並將所有對象數組存入到集合中,所以該方法返回查詢結果的集合。
結果集的第三種處理方法,可以把結果的第一行封裝成JavaBean對象,這個JavaBean的類必須要有空參的構造方法,不然不能封裝成功,注意是第一行不是每一行。
這裡解釋一下,我們這裡用了泛型,如果不用泛型,則返回object對象,用了泛型就可以返回指定的對象了,這個對象構造的時候傳入的參數是Sort.class,之所以傳入class,是因為內部代碼會通過反射的方式構造出來對象,傳Sort.class,則會構造出Sort對象。
第五種結果集處理方法columnListHandler,將查詢結果指定一個列,將這個列的數據存儲到list<Object>集合中。
第六種結果集處理方法ScalarHandler,對於查詢以後只有一個結果集(一行一列)的時候,用它很合適
結果正確,上面的代碼泛型為Object,如果泛型為Object的話,那麼和不寫泛型一個意思,那泛型可以寫Integer嗎?
不可以,出現了異常,這個異常的大概意思就是說這個Long不能轉成int,說明改結果集處理方式內部是按照long處理的,所以會出問題,那麼泛型我們可以用long。
可以看出完全沒有問題的,所以以後用這個結果集處理的時候要注意了。
結果集的第七種處理方法,MapHandler,將結果集第一行數據,封裝到map集合,數據中列名為鍵,列值為值,返回類型為Map<String,Object>,必須要寫上泛型。
結果集的第七種處理方法,MapHandler,將結果集每一行數據,封裝到map集合,然後再將這些map存到list中,所以返回類型List<Map<String,Object>> list