1. Apache-DBUtils简介
commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。
2. 重要API使用
2.1 QueryRunner
- 提供一系列重载的update()和query()数据库操作
- 简化了SQL语句查询,与ResultSetHandler组合一起使用完成大部分数据操作,减少代码量
2.2 ResultSetHandler接口及实现类
-
该接口处理java.sql.ResultSet,将数据转换为另一种形式
-
接口主要的实现类
ArrayHandler:把结果集中的第一行数据转成对象数组。 ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。 BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。 BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。 ColumnListHandler:将结果集中某一列的数据存放到List中。 KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里,再把这些map再存到一个map 里,其key为指定的key。 MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。 MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List ScalarHandler:查询单个值对象
-
插入示例
public void insertTest(){
QueryRunner qr = new QueryRunner();
Connection conn=null;
try {
conn = DBUtil.getConnection();
String sql="insert into customers(name,email,birth)values(?,?,?)";
int inserti = qr.update(conn, sql, "蔡徐坤", "cxk@123.com", "1997-8-9");
System.out.println("inserti = " + inserti);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.closeResource(conn,null);
}
}
- BeanHandler:是ResultSetHandler接口的实现类,用于封装表中的一条记录
public void query(){
QueryRunner runner= new QueryRunner();
Connection conn=null;
try {
conn = DBUtil.getConnection();
String sql = "select id,name,email,birth from customers where id=?";
BeanHandler<Customer> handler = new BeanHandler<Customer>(Customer.class);
Customer cu = runner.query(conn, sql, handler, 24);
System.out.println(cu);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.closeResource(conn,null);
}
}
- BeanListHandler示例
public void queryList(){
QueryRunner runner= new QueryRunner();
Connection conn=null;
try {
conn = DBUtil.getConnection();
String sql = "select id,name,email,birth from customers where id<?";
BeanListHandler<Customer> handler = new BeanListHandler<Customer>(Customer.class);
List<Customer> cu = runner.query(conn, sql, handler, 24);
System.out.println(cu);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.closeResource(conn,null);
}
}
- MapHandler:是ResultSetHandler接口的实现类,对应类中的一条记录,将字段及对应字段的值作为map中的key和value
public void queryMap(){
QueryRunner runner= new QueryRunner();
Connection conn=null;
try {
conn = DBUtil.getConnection();
String sql = "select id,name,email,birth from customers where id=?";
MapHandler handler = new MapHandler();
Map<String, Object> query = runner.query(conn, sql, handler, 24);
System.out.println(query);
} catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.closeResource(conn,null);
}
}
2.3 DbUtils
- 提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的
- 使用类直接调用方法关闭连接