【DBUtils數據庫連接池多表連接查詢】

DBUtils數據庫連接池多表連接查詢
MapListHandler的使用(具體使用方式查看官方文檔http://commons.apache.org/proper/commons-dbutils/apidocs/index.html)
key——sql語句查詢的字段
value——數據庫中查詢得到的結果
出現的問題描述
對於多表連接查詢,如果使用BeanListHandler,則會出現空指針異常。
例如employee和department分類封裝爲Javabean。employee中聲明一個department的對象。如下圖所示:


解決方案
使用MapListHandle最終返回List<map<String,Object>>,使用迭代的方式通過查詢字段取出value,首先根據Department類中的key從map中取出對應的value,並將其封裝爲Department對象。最終再封裝爲Employee對象,這樣就解決了使用BeanListHandler出現空指針異常的現象。
具體實現代碼如下圖

ResultSetHandler實現類介紹(由DbUtils框架提供)

 

     備註:DbUtils給我們提供了10個ResultSetHandler實現類,分別是:

     ①ArrayHandler:     將查詢結果的第一行數據,保存到Object數組中

     ②ArrayListHandler     將查詢的結果,每一行先封裝到Object數組中,然後將數據存入List集合

     ③BeanHandler     將查詢結果的第一行數據,封裝到user對象

     ④BeanListHandler     將查詢結果的每一行封裝到user對象,然後再存入List集合

     ⑤ColumnListHandler     將查詢結果的指定列的數據封裝到List集合中

     ⑥MapHandler     將查詢結果的第一行數據封裝到map結合(key==列名,value==列值)

     ⑦MapListHandler     將查詢結果的每一行封裝到map集合(key==列名,value==列值),再將map集合存入List集合

     ⑧BeanMapHandler     將查詢結果的每一行數據,封裝到User對象,再存入mao集合中(key==列名,value==列值)

     ⑨KeyedHandler     將查詢的結果的每一行數據,封裝到map1(key==列名,value==列值 ),然後將map1集合(有多個)存入map2集合(只有一個)

     ⑩ScalarHandler     封裝類似count、avg、max、min、sum......函數的執行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章