Commons DBUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能
- dbutils 只是帮我们简化了CRUD 的代码, 但是连接的创建以及获取工作不在他的考虑范围
QueryRunner runner = new QueryRunner();
//增删改
runner.update();
//查询
runner.query();
-
导入jar包 commons-dbutils-1.4.jar
-
基本代码如下:
增删改
//创建 QueryRunner 对象
QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());
//增加
queryRunner.update("insert into account values (null , ? , ? )", "aa" ,1000);
//删除
queryRunner.update("delete from account where id = ?", 5);
//更新
queryRunner.update("update account set money = ? where id = ?", 10000000 , 6);
查询
- 直接new接口的匿名实现类
QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());
Account account = queryRunner.query("select * from account where id = ?", new ResultSetHandler<Account>(){
@Override
public Account handle(ResultSet rs) throws SQLException {
Account account = new Account();
while(rs.next()){
String name = rs.getString("name");
int money = rs.getInt("money");
account.setName(name);
account.setMoney(money);
}
return account;
}
}, 6);
System.out.println(account.toString());
- 直接使用框架已经写好的实现类。
- 查询单个对象
BeanHandler
new BeanHandler<Account>(Account.class)
// 通过类的字节码得到该类的实例
//创建一个类的实例。
Account a= Account.class.newInstance();
示例:
QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());
//查询单个对象
Account account = queryRunner.query("select * from account where id = ?",
new BeanHandler<Account>(Account.class), 8);
- 查询多个对象
BeanListHandler
QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());
List<Account> list = queryRunner.query("select * from account ",
new BeanListHandler<Account>(Account.class));
//打印
for (Account account : list) {
System.out.println(account.toString());
}
ResultSetHandler 接口常用的实现类
以下两个是使用频率最高的
BeanHandler, 查询到的单个数据封装成一个对象
BeanListHandler, 查询到的多个数据封装 成一个List<对象>
ArrayHandler==, 查询到的单个数据封装成一个数组
ArrayListHandler==, 查询到的多个数据封装成一个集合 ,集合里面的元素是数组。
MapHandler==, 查询到的单个数据封装成一个map
MapListHandler==,查询到的多个数据封装成一个集合 ,集合里面的元素是map。
ColumnListHandler
KeyedHandler
ScalarHandler