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

  

posted @ 2021-03-16 11:49  公雪  阅读(98)  评论(0编辑  收藏  举报