Java学习之DBUtils、DBCP

本文介绍DBUtils库简化JDBC操作的方法,包括QueryRunner执行SQL、ResultSetHandler处理结果集等核心组件。同时覆盖了数据库连接池如DBCP、C3P0的基础配置与使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DBUtils 

    第三方类库 是数据库的工具类

    简化数据库操作的代码和JDBC连接的代码

    操作数据库的三个核心类 

    1.DBUtils      关闭数据库

closeQuietly 不会抛出异常

不会抛出SQLException异常

    2.QueryRunner 负责查询的对象    

update(Connection conn, String sql, Object... params)

传入sql可以使用占位符(?)来代替

通过参数3 把要替换的占位符的值传进去

    3.ResultSetHandle 查询结果的返回值

是一个接口 需要使用它的实现类(8个) query(Connection conn, String sql,     ResultSetHandler<T> rsh, Object... params)


    QueryRunner以及DBUtils的使用示例

    // 创建QueryRunner对象
    QueryRunner queryRunner = new QueryRunner();
    String sql = "insert into goods values (null,?,?,?)";
    // 替换占位符
    Object[] obj = {"糖",4,"好吃不贵"};
    // 调用执行sql语句的方法
    int row = queryRunner.update(connection, sql,obj);
    // 处理返回的结果
    System.out.println(row);
    // 关闭资源
    DbUtils.closeQuietly(connection);


ResultSetHandle的8个实现类

    

    ArrayHandler

        该方法使用ArrayHandle()类查询时

会返回数据库中的一条记录

并且会把该条记录的字段放入一个Object数组中

    

    ArrayListHandler

    List<Object[]> query = queryRunner.query(connection, sql, new ArrayListHandler());
    for (Object[] objects : query) {
	    System.out.println(Arrays.toString(objects));
    }

    集合中的每一个Object[]就是数据库中的一条记录

    

    BeanHandler

    // 可以将查询结果 帮你放进实体对象中
    // 参数 是放入的对象的实体类的 .class 文件类型
    Goods g = queryRunner.query(connection, sql, new BeanHandler<Goods>(Goods.class));
    System.out.println(g);
      BeanListHandler
    ArrayList<Goods> list = (ArrayList<Goods>) queryRunner.query(connection, sql, new BeanListHandler<>(Goods.class));
    for (Goods goods : list) {
	    System.out.println(goods);
    }

    ColumnListHandler

    // ColumnListHandler 把数据库中的一列数据 放入集合中给你返回
    // 默认第一列 可以传入列名
    List<Object> list = queryRunner.query(connection, sql, new ColumnListHandler<>("sname"));
    for (Object object : list) {
	    System.out.println(object);
    }
      ScalarHandler  
    // 测试ScalarHandler
    // 该方法放回的类型是Long
    Long query = queryRunner.query(connection, sql, new ScalarHandler<Long>(1));
    System.out.println(query);

    MapHandler

    Map<String, Object> query = queryRunner.query(connection, sql, new MapHandler());
    Set<String> keySet = query.keySet();
    for (String string : keySet) {
	    System.out.println(string + query.get(string));
    }

    MapListHandler

    ArrayList<Map<String, Object>> query = (ArrayList<Map<String, Object>>) queryRunner.query(connection, sql, new MapListHandler());
    for (Map<String, Object> map : query) {
	    for (String key : map.keySet()) {
		    System.out.print(key + "   " + map.get(key) + ",");
	    }
	    System.out.println();
    }


DataSource(数据源 数据库连接池)

    数据库连接池中,保存了许多的连接(Connection)。在操作数据库时,最耗费资源的是创建连接和销毁连接。当用户需要做查询数据库的操作时,会从连接池中取出来一个使用。使用完毕后不会销毁这个连接,而是从新放入连接池中备用。

 

    java为数据库连接池,准备了一套规范(接口)。这套规范也是由数据库厂商实现,并且该类也提供了获取连接的方法。常用的数据库连接池:DBCPC3P0。


获取DataSource的工具类
    public class DataSourceUtil {
    // 声明一个BasicDataSource
    private static BasicDataSource dataSource = new BasicDataSource();
	
    private DataSourceUtil() {
		
    }
	
    // 设置dataSource
    static {
	    // 基础设置
	    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
	    dataSource.setUrl("jdbc:mysql://localhost:3306/myjdbc01");
	    dataSource.setUsername("root");
	    dataSource.setPassword("123456");
		
	    // 扩展设置(初始化多少个连接)
	    // 初始化连接数量
	    dataSource.setInitialSize(10);
	    // 设置最大连接数量
	    dataSource.setMaxActive(8);
	    // 设置最大空闲连接数量
	    dataSource.setMaxIdle(5);
	    // 设置最小空闲连接数量
	    dataSource.setMinIdle(1);
    }
	
    // 获取数据源的方法
    public static DataSource getDataSource() {
	    return dataSource;
    }
    }










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值