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......函數的執行結果