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

      

  • 相关阅读:
    使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍 Page Cache(页面缓存)
    使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍 Intercepting Filter(截取筛选器)
    使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍
    使用Micrisoft.net设计方案 第三章Web表示模式
    使用Micrisoft.net设计方案 第二章组织模式
    使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式
    Area区域路由的配置
    Area路由的配置
    layUI+mvc动态菜单数据表
    layUI+mvc动态菜单控制器
  • 原文地址:https://www.cnblogs.com/-gongxue/p/14542686.html
Copyright © 2020-2023  润新知