跳转到目录
如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC开发,本案例我们讲采用apache commons组件一个成员:DBUtils
目的: 简化JDBC编程
Dbutils三个核心功能介绍
跳转到目录
提供数据源
QueryRunner(DataSource)
创建核心类,并提供数据源,内部自己维护Connectionupdate(String sql , Object ... params)
执行DML语句query(String sql , ResultSetHandler , Object ... params)
执行DQL语句,并将查询结果封装到对象中。提供连接
QueryRunner()
创建核心类,没有提供数据源,在进行具体操作时,需要手动提供Connectionupdate(Connection conn , String sql , Object ... params)
使用提供的Connection,完成query(Connection conn , String sql , ResultSetHandler , Object ... params)
使用提供的Connection,执行DQL语句,并将查询结果封装到对象中。跳转到目录
添加、更新、删除操作
/**
* QueryRunner实现添加、更新、删除操作
*/
public class DBUtilsDemo1 {
@Test
public void insert() throws Exception {
// 获取一个用来执行SQL语句对象
QueryRunner qr = new QueryRunner(DruidUtil.getDataSource());
String sql = "INSERT INTO product(pid, pname, price, category_id) VALUES(?,?,?,?)";
Object[] params = {100, "百岁山", 5500, "c005"};
int count = qr.update(sql, params);
System.out.println("执行成功:=" + count);
}
@Test
public void update() throws Exception {
QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
String sql = "UPDATE product SET pname=?,price=?,category_id=? WHERE pid=?";
Object[] params = {"芒果99", "998", "c009", 13};
int count = qr.update(sql, params);
System.out.println(count);
}
@Test
public void delete() throws SQLException {
QueryRunner queryRunner = new QueryRunner(C3P0Util.getDataSource());
String sql = "DELETE from product WHERE pid = ?";
Object[] params = {100};
int r = queryRunner.update(sql, params);
System.out.println(r);
}
}
跳转到目录
跳转到目录
JavaBean
跳转到目录
JavaBean就是一个类,在开发中常用于封装数据,。具有如下特性.
BeanHandler
跳转到目录
查询数据表结果集处理其中一种方式:
BeanHandler处理方式 将数据表的结果集第一行数据,封装成JavaBean类的对象
构造方法: BeanHandler(Class<T> type) 传递一个Class类型对象,将结果封装到哪个类的对象
@Test
public void testQueryBeanHandler() throws Exception{
QueryRunner queryRunner = new QueryRunner(DruidUtil.getDataSource());
String sql = "SELECT * FROM product WHERE pid = ?";
Object[] params = {6};
// 查询并封装
Product pro = queryRunner.query(sql, new BeanHandler<>(Product.class), params);
System.out.println(pro);
}
BeanListHandler
跳转到目录
查询数据表结果集处理其中一种方式:
BeanListHandler处理方式 将数据表的每一行数据,封装成JavaBean类对象 ,多行数据了,多个JavaBean对象,存储List集合.
@Test
public void testQueryBeanListHandler() throws Exception{
QueryRunner queryRunner = new QueryRunner(DBCPUtil.getDataSource());
String sql = "SELECT * FROM product";
Object[] params = {};
List<Product> pros = queryRunner.query(sql, new BeanListHandler<Product>(Product.class), params);
for (Product pro : pros) {
System.out.println(pro);
}
}
ScalarHander
跳转到目录
作用: 把查询结果的某一列,存储到List集合对象
构造方法:
@Test
public void testQueryScalarHandler() throws Exception{
QueryRunner queryRunner = new QueryRunner(DruidUtil.getDataSource());
String sql = "SELECT * FROM product WHERE pid = ?";
Object[] params = {2};
// 表示查询第二行的第二列
Object o = queryRunner.query(sql, new ScalarHandler(2), params);
System.out.println(o);
}
ColumnListHandler
跳转到目录
作用: 把查询结果的某一列,存储到List集合对象.用于聚合函数
构造方法:
@Test
public void testQueryColumnListHandler() throws Exception{
QueryRunner queryRunner = new QueryRunner(C3P0Util.getDataSource());
String sql = "SELECT * FROM product";
// List
// List
List<Object> list = queryRunner.query(sql, new ColumnListHandler("pname"));
for (Object o : list) {
System.out.println(o);
}
}
跳转到目录
DBUtils工具
DBUtils常用类与方法
QueryRunner 用来执行SQL语句对象
ResultSetHandler 处理结果集的对象