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); } }