DBUtils工具类(一)
2.1 概述
DBUtils 是java中数据库操作的使用工具 DBUtils封装了JDBC操作 简化了JDBC操作 可以少些代码
2.2 三个核心功能
QueryRunner 中提供了sql语句操作的API
ResultSetHandler 接口 用于select 操作后 怎样封装结果集
Dbutils 工具类 关闭资源 事物的处理方法
2.3 准备数据 product表
CREATE TABLE product(
pid INT PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20),
price INT,
category_cid VARCHAR(20)
);
INSERT INTO product(pname,price,category_cid)VALUES('华为',4999,'soo1'),
('小米',1234,'soo1'),
('劲霸男装',120,'soo2'),
('红蜻蜓',300,'soo2'),
('香奈儿',800,'soo3'),
('大宝',10,'soo3'),
('果冻',20,'soo4'),
('饼干',3,'soo4');
SELECT*FROM product;
2.4 QueryRunner---》 newQueryRunner(DataSource);
update(String sql, Object ...prams) DML增删改
query(String sql,ResultSetHandler,Object ...prams));
2.5 apache公司的commons组件 ---》jdbc6部---》3步(jdbc)
QueryRunner 中提供了sql语句操作的API 增删 改查
update query
ResultSetHandler 接口 用于select 操作后 接受查询的结果集
Dbutils 工具类 关闭资源 事物的处理方法 释放资源
2.6使用步骤
1 创建QueryRuner 对象
2 调用QueryRuner 对象的方法 update query
3 处理结果
下面我们来看代码:
1.1增加数据
@Test
public void test01DbUtils() throws SQLException {
//1 创建QueryRuner 对象
QueryRunner qr = new QueryRunner();
//2 调用QueryRuner 对象的方法 update query
Connection conn = C3P0xmlUtils.getconnection();
String sql="insert into product(pname,price,category_cid)values(?,?,?)";
int row = qr.update(conn, sql, "花生", 20, "s004");
System.out.println(row);
DbUtils.closeQuietly(conn);
}
1.2更改数据
第一种:
@Test
public void test02DbUtils() throws SQLException {
//1,创建QueryRunner对象
QueryRunner qr = new QueryRunner();
//2,调用queryrunner对象的方法
Connection conn = C3P0xmlUtils.getconnection();
String sql="update product set pname=?where pid=?";
int rwo = qr.update(conn,sql,"海尔",1);
System.out.println(rwo);
DbUtils.closeQuietly(conn);
}
第二种:
@Test
public void test03DbUtils() throws SQLException {
QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
int row = qr.update("update product set pname=?where pid=?", "荣耀", 2);
System.out.println(row);
}
1.3删除数据
@Test
public void test04DbUtils() throws SQLException {
QueryRunner qr = new QueryRunner(new ComboPooledDataSource());
// int row = qr.update("delete from product where pid=?", 1);
int row = qr.update("delete from product where pid in(?,?,?)",2, 3, 4);
System.out.println(row);
}
重点:
使用Dbutils工具包对数据库的表进行查询 使用结果集BeanHnadler
* 使用方式:把查询的结果第一行数据取出来 存储到javabean对象中返回
* 构造方法
* BeanHandler(Class<T> type) 传递javabean的class文件对象 Product.class
2,1查询 BeanHandler(Class<T> type)
@Test
public void test05DbUtils() throws SQLException {
QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
Product o = qr.query("select*from product", new BeanHandler<>(Product.class));
System.out.println(o);
}
2,2查询
使用Dbutils工具包对数据库的表进行查询 使用结果集BeanListHnadler
使用方式把查询的多行结果存储到多个javabean中 -----》List集合
@Test
public void test06() throws SQLException {
QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
List<Product> list = qr.query("select*from product", new BeanListHandler<>(Product.class));
for(Product p:list){
System.out.println(p);
}
}
2,3查询
使用Dbutils工具包对数据库的表进行查询 使用结果集ScalarHnadler 用于接受slq语句是单一返回的情况
* 使用方式:
* 1 聚合函数 sum avg count max min
* 2 获得某一行的某一字段的值
* select pname from product where pid = ?
@Test
public void test07() throws SQLException {
QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
// Object q = qr.query("select count(price)from product", new ScalarHandler());
Object q = qr.query("select pname from product where pid=?", new ScalarHandler(),5);
System.out.println(q);
}
2.4查询
使用Dbutils工具包对数据库的表进行查询 使用结果集ColumnListHandler
用于查询指定的列 数据储存到List集合
@Test
public void test08() throws SQLException {
QueryRunner qr = new QueryRunner(C3P0xmlUtils.getDataSource());
List<Object> list = qr.query("select pid,pname from product", new ColumnListHandler());
for(Object o:list){
System.out.println(o);
}
}