0316 DBUtils
DBUtils封装了JDBC中的应用
三个核心功能
(1)QueryRunner提供了对sql语句操作的API
(2)ResultSetHandler接口提供了用于select查询后的结果集的处理
(3)DBUtils类就是一个工具类,定义了关闭资源与事务处理的方法
QueryRunner核心类
常用方法
update(Connection conn, String sql, Object... params) 用于完成表的增删改
query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)用于完成数据表的查询
例:新增,在这里还需要结束JDBCUtils获取conn对象
//新增分类
public void add() throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//创建queryrunner对象
QueryRunner qr=new QueryRunner();
String sql="insert into sort(sname,sdesc) values(?,?)";
//执行
int row=qr.update(conn,sql,"插排","插电的");
System.out.println(row);
}
同样删除和修改跟上述代码差不多,只不过sql语句不一样
查询ResultSetHandler结果集处理类
(1)ArrayHandler类 将查询到的数据的第一条数据存到Object数组中,数组中的每一个元素都是每一个字段的值(不常用)
例:借助JDBCUtils获取conn对象
//查询ArrayHandler
public void get1() throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//创建queryrunner对象
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
Object[] obj=qr.query(conn,sql, new ArrayHandler());
for(Object o:obj){
System.out.print(o);
}
System.out.println();
}
(2)ArrayListHandler 将查询到的每一条数据存储到object数组中,再将这些object数组存到list集合中
例:借助JDBCUtils获取conn对象
//ArrayListHandler
public void get2() throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//创建queryrunner对象
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
List<Object[]> list=qr.query(conn,sql, new ArrayListHandler());
for(Object[] objs:list){
for(Object o:objs){
System.out.print(o+" ");
}
System.out.println();
}
}
(3)BeanHeader 将查询到的数据的第一条数据封装到javaBean中
例:借助JDBCUtils获取conn对象
//BeanHandler
public void get3() throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//创建queryrunner对象
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
Sort sort=qr.query(conn,sql, new BeanHandler<Sort>(Sort.class));
System.out.println(sort);
}
(4)BeanListHeader 将查询到的每一条数据封装到javaBean中 再将javaBean存到list集合中
例:借助JDBCUtils获取conn对象
//BeanListHandler
public void get4() throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//创建queryrunner对象
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
List<Sort> list=qr.query(conn,sql, new BeanListHandler<Sort>(Sort.class));
System.out.println(list);
}
(5)ColumnListHeader 将查询到的指定字段名的结果存到list集合中
例:借助JDBCUtils获取conn对象
//ColumnListHandler
public void get5() throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//创建queryrunner对象
QueryRunner qr=new QueryRunner();
String sql="select sname from sort";
List<String> list=qr.query(conn,sql, new ColumnListHandler<String>());
System.out.println(list);
}
//ColumnListHandler
public void get6() throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//创建queryrunner对象
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
List<String> list=qr.query(conn,sql, new ColumnListHandler<String>("sname"));
System.out.println(list);
}
(6)ScalarHandler 用于单数据查询,类似select count(*)
例:借助JDBCUtils获取conn对象
//ScalarHandler
public void get7() throws SQLException{
//获取链接对象
Connection conn=JDBCUtils.getConn();
//创建queryrunner对象
QueryRunner qr=new QueryRunner();
String sql="select count(*) from sort";
Long count=qr.query(conn,sql, new ScalarHandler<Long>());
System.out.println(count);
}
连接池
链接用来管理connection,所以我们就不用频繁的创建链接对象了,而是通过从池中获取connection对象 用完了然后再还给链接池
常见的连接池DBCP.C3P0
我们学习DBCP
需要导入两个jar包

编写工具类
MYDBUtils
package com.oracle.tools;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
public class MYDBUtils {
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/java1127?characterEncoding=utf-8";
public static final String USERNAME = "root";
public static final String PASSWORD = "123456";
/*
* 创建连接池BasicDataSource
*/
public static BasicDataSource dataSource = new BasicDataSource();
//静态代码块
static {
//对连接池对象 进行基本的配置
dataSource.setDriverClassName(DRIVER); // 这是要连接的数据库的驱动
dataSource.setUrl(URL); //指定要连接的数据库地址
dataSource.setUsername(USERNAME); //指定要连接数据的用户名
dataSource.setPassword(PASSWORD); //指定要连接数据的密码
}
/*
* 返回连接池对象
*/
public static DataSource getDataSource(){
return dataSource;
}
}
那我们的之前写过的代码就可以改成
package com.oracle.dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import com.oracle.daomain.Sort;
import com.oracle.tools.MYDBUtils;
public class SortDao {
//新增分类
public void add() throws SQLException{
//创建queryrunner对象
QueryRunner qr=new QueryRunner(MYDBUtils.getDataSource());
String sql="insert into sort(sname,sdesc) values(?,?)";
//执行
int row=qr.update(sql,"插排","插电的");
System.out.println(row);
}
//查询ArrayHandler
public void get1() throws SQLException{
//创建queryrunner对象
QueryRunner qr=new QueryRunner(MYDBUtils.getDataSource());
String sql="select * from sort";
Object[] obj=qr.query(sql, new ArrayHandler());
for(Object o:obj){
System.out.print(o);
}
System.out.println();
}
//ArrayListHandler
public void get2() throws SQLException{
//创建queryrunner对象
QueryRunner qr=new QueryRunner(MYDBUtils.getDataSource());
String sql="select * from sort";
List<Object[]> list=qr.query(sql, new ArrayListHandler());
for(Object[] objs:list){
for(Object o:objs){
System.out.print(o+" ");
}
System.out.println();
}
}
//BeanHandler
public void get3() throws SQLException{
//创建queryrunner对象
QueryRunner qr=new QueryRunner(MYDBUtils.getDataSource());
String sql="select * from sort";
Sort sort=qr.query(sql, new BeanHandler<Sort>(Sort.class));
System.out.println(sort);
}
//BeanListHandler
public void get4() throws SQLException{
//创建queryrunner对象
QueryRunner qr=new QueryRunner(MYDBUtils.getDataSource());
String sql="select * from sort";
List<Sort> list=qr.query(sql, new BeanListHandler<Sort>(Sort.class));
System.out.println(list);
}
//ColumnListHandler
public void get5() throws SQLException{
//创建queryrunner对象
QueryRunner qr=new QueryRunner(MYDBUtils.getDataSource());
String sql="select sname from sort";
List<String> list=qr.query(sql, new ColumnListHandler<String>());
System.out.println(list);
}
//ColumnListHandler
public void get6() throws SQLException{
//创建queryrunner对象
QueryRunner qr=new QueryRunner(MYDBUtils.getDataSource());
String sql="select * from sort";
List<String> list=qr.query(sql, new ColumnListHandler<String>("sname"));
System.out.println(list);
}
//ScalarHandler
public void get7() throws SQLException{
//创建queryrunner对象
QueryRunner qr=new QueryRunner(MYDBUtils.getDataSource());
String sql="select count(*) from sort";
Long count=qr.query(sql, new ScalarHandler<Long>());
System.out.println(count);
}
}

浙公网安备 33010602011771号