commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。
DbUtils组件
1. 简化jdbc操作
2. 下载组件,引入jar文件 : commons-dbutils-1.6.jar
实例
|-- DbUtils 关闭资源、加载驱动
|-- QueryRunner 组件的核心工具类:定义了所有的与数据库操作的方法(查询、更新)
Int update(Connection conn, String sql, Object param); 执行更新带一个占位符的sql
Int update(Connection conn, String sql, Object… param); 执行更新带多个占位符的sql
Int[] batch(Connection conn, String sql, Object[][] params) 批处理
T query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params) 查询方法
Int update( String sql, Object param);
Int update( String sql, Object… param);
Int[] batch( String sql, Object[][] params)
注意: 如果调用DbUtils组件的操作数据库方法,没有传入连接对象,那么在实例化QueryRunner对象的时候需要传入数据源对象: QueryRunner qr = new QueryRunner(ds);
DbUtils提供的封装结果的一些对象:
1) BeanHandler: 查询返回单个对象
2) BeanListHandler: 查询返回list集合,集合元素是指定的对象
3) ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
4) ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
5) ScalarHandler 查询返回结果记录的第一行的第一列 (在聚合函数统计的时候用)
6) MapHandler 查询返回结果的第一条记录封装为map
public class App_update {
private Connection conn;
@Test
public void testUpdate() throws Exception {
String sql = "delete from admin where id=?";
conn = JdbcUtil.getConnection();
QueryRunner qr = new QueryRunner();
qr.update(conn, sql, 26);
DbUtils.close(conn);
}
@Test
public void testBatch() throws Exception {
String sql = "insert into admin (userName, pwd) values(?,?)";
conn = JdbcUtil.getConnection();
QueryRunner qr = new QueryRunner();
qr.batch(conn, sql, new Object[][]{ {"jack1","888"},{"jack2","999"} });
conn.close();
}
}
public class App_query {
private Connection conn;
@Test
public void testQuery() throws Exception {
String sql = "select * from admin where id=?";
conn = JdbcUtil.getConnection();
QueryRunner qr = new QueryRunner();
Admin admin = qr.query(conn, sql, new ResultSetHandler<Admin>() {
public Admin handle(ResultSet rs) throws SQLException {
if (rs.next()) {
Admin admin = new Admin();
admin.setId(rs.getInt("id"));
admin.setUserName(rs.getString("userName"));
admin.setPwd(rs.getString("pwd"));
return admin;
}
return null;
}
}, 29);
System.out.println(admin);
conn.close();
}
@Test
public void testQueryOne() throws Exception {
String sql = "select * from admin where id=?";
conn = JdbcUtil.getConnection();
QueryRunner qr = new QueryRunner();
Admin admin = qr.query(conn, sql, new BeanHandler<Admin>(Admin.class), 29);
System.out.println(admin);
conn.close();
}
@Test
public void testQueryMany() throws Exception {
String sql = "select * from admin";
conn = JdbcUtil.getConnection();
QueryRunner qr = new QueryRunner();
List<Admin> list = qr.query(conn, sql, new BeanListHandler<Admin>(Admin.class));
System.out.println(list);
conn.close();
}
@Test
public void testArray() throws Exception {
String sql = "select * from admin";
conn = JdbcUtil.getConnection();
QueryRunner qr = new QueryRunner();
Map<String, Object> map = qr.query(conn,sql, new MapHandler());
conn.close();
}
}