【DBUtils数据库连接池多表连接查询】

DBUtils数据库连接池多表连接查询
MapListHandler的使用(具体使用方式查看官方文档http://commons.apache.org/proper/commons-dbutils/apidocs/index.html)
key——sql语句查询的字段
value——数据库中查询得到的结果
出现的问题描述
对于多表连接查询,如果使用BeanListHandler,则会出现空指针异常。
例如employee和department分类封装为Javabean。employee中声明一个department的对象。如下图所示:

【DBUtils数据库连接池多表连接查询】_第1张图片
解决方案
使用MapListHandle最终返回List>,使用迭代的方式通过查询字段取出value,首先根据Department类中的key从map中取出对应的value,并将其封装为Department对象。最终再封装为Employee对象,这样就解决了使用BeanListHandler出现空指针异常的现象。
具体实现代码如下图

【DBUtils数据库连接池多表连接查询】_第2张图片

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......函数的执行结果

你可能感兴趣的:(java)