Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能
直接使用原生的JDBC接口进行开发,在做查询操作时,返回结果是ResultSet
集合;如果需要返回实体类对象时,需要自己写处理方案,将ResultSet
转为实体类对象;使用DBUtiles
可以直接使用QueryRunner
,通过简单的参数配置,快速得到想要的结果。
jar包:commons-dbutils-1.4.jar
1、增删改
不用再关注资源的释放
@Test public void DBUTilsTest() throws SQLException {
//使用C3P0数据库连接池
ComboPooledDataSource dataSourve = new ComboPooledDataSource();
// DBUiles只用于 CRUD操作,连接数据库需要使用其他方式
QueryRunner queryRunner = new QueryRunner(dataSourve);
// 新增
queryRunner.update("insert into stu value(null,?,?)", "xiaoming", 1234);
// 修改
queryRunner.update("update stu set name = ? where id = ?", "tom", 13);
// 删除
queryRunner.update("delete from stu where id = ?", 15);
}
2、查询
- 直接new接口的匿名实现类
Stu stu = queryRunner.query("select * from stu where id = ?", 14, new ResultSetHandler < Stu > () {
@Override public Stu handle(ResultSet rs) throws SQLException {
Stu stu = new Stu();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
stu.setId(id);
stu.setName(name);
}
return stu;
}
});
System.out.println(stu);
- 直接使用框架已经写好的实现类。
查询单个对象
//查询单个对象
Stu stu = queryRunner.query("select * from stu where id = 16", new BeanHandler < Stu > (Stu.class));
System.out.println(stu);
查询多个对象
List < Stu > list = queryRunner.query("select * from stu ", new BeanListHandler < Stu > (Stu.class));
for (Stu stu: list) {
System.out.println(stu);
}
3、ResultSetHandler 常用的实现类
以下两个是使用频率最高的
- BeanHandler, 查询到的单个数据封装成一个对象
- BeanListHandler, 查询到的多个数据封装 成一个List<对象>
- ArrayHandler, 查询到的单个数据封装成一个数组
- ArrayListHandler, 查询到的多个数据封装成一个集合 ,集合里面的元素是数组。
- MapHandler, 查询到的单个数据封装成一个map
- MapListHandler,查询到的多个数据封装成一个集合 ,集合里面的元素是map。
- ColumnListHandler:查询一个列
- KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里
- ScalarHandler:查询数量count