Apache——DBUtils

韩顺平 零基础30天学会Java

一、基本介绍

1、commons-dbutils是 Apache 组织提供的一个开源JDBC工具类库,它是对JDBC的封装,使用dbutils能极大简化jdbc编码的工作量

二、DbUtils类

1、QueryRunner类:该类封装了SQL的执行,是线程安全的。可以实现增、删、改、查、批处理

2、使用QueryRunner类实现查询

3、ResultSetHandler接口:改接口用于处理java.sql.ResultSet,将数据按照要求转换成另一种形式

三、使用DBUtils+数据库连接池(Druid)方式完成对表的操作

  • actor表

    public class DBUtils_Use {
    //测试查询到多行结果
    @Test
    public void testQueryMany() throws Exception {
    //1、得到连接
    Connection connection = Druid.getConnection();
    //使用DBUtils 类和接口,先引入DBUtils相关的jar,加入到本Project
    //3、创建QueryRunner
    QueryRunner queryRunner = new QueryRunner();
    //4、就可以执行相关的方法返回ArrayList 返回结果集
    // (1)query 方法就是执行sql语句,得到resultSet----封装到--->ArrayList集合中
    //(2)返回集合
    //(3)connection:连接
    // (4)sql:执行的sql语句
    // (5)new BeanListHandler<>(Actor.class):在将resultset-》actor对象-》封装到ArrayList
    //底层使用反射机制,去获取Actor类的属性然后进行封装
    // (6)1 就是给sql语句中的?赋值,可以有多个值,因为是可变参数
    //(7)底层的到的resultSet,会在query 关闭,之后不用再关闭
    String select = "select * from actor";
    List list = queryRunner.query(connection, select, new BeanListHandler<>(Actor.class));
    System.out.println("输出集合信息");
    for (Actor actor : list) {
    System.out.println(actor);
    }

    复制代码
          //释放连接
          Druid.close(null, null, connection);
      }
    
      //测试查询到单行结果
      @Test
      public void testSingle() throws Exception {
          //1、得到连接
          Connection connection = Druid.getConnection();
          //2、创建QueryRunner
          QueryRunner queryRunner = new QueryRunner();
          //3、sql语句
          String select = "select * from actor where id=?";
          //因为知道返回的是单行记录,因此使用 BeanHandler
          Actor actor = queryRunner.query(connection, select, new BeanHandler<>(Actor.class), 3);
          System.out.println(actor);
    
          //释放资源
          Druid.close(null, null, connection);
      }
    
      //演示查询单行单列的情况
      @Test
      public void testScalar() throws Exception {
          //1、得到连接
          Connection connection = Druid.getConnection();
          //2、创queryRunner
          QueryRunner queryRunner = new QueryRunner();
          //3、组织sql
          String select = "select name from actor where id=?";
          //执行
          Object query = queryRunner.query(connection, select, new ScalarHandler(), 3);
          System.out.println(query);
          //释放资源
          Druid.close(null, null, connection);
      }
    
      //更新内容
      @Test
      public void update() throws Exception {
          //1、获得连接
          Connection connection = Druid.getConnection();
          //2、创建QueryRunner
          QueryRunner queryRunner = new QueryRunner();
          //3、组织sql语句
          String update = "UPDATE actor SET `name`=? WHERE id=?";
          //4、执行
          int updateRows = queryRunner.update(connection, update, "新小龙女", 4);
          //5、释放资源
          Druid.close(null, null, connection);
      }
    
      //删除内容
      @Test
      public void delete() throws Exception {
          //1、获得连接
          Connection connection = Druid.getConnection();
          //2、创建QueryRunner
          QueryRunner queryRunner = new QueryRunner();
          //3、组织sql
          String delete = "DELETE FROM actor WHERE id=3";
          //4、执行
          int deleteRows = queryRunner.update(connection, delete);
          System.out.println(deleteRows > 0 ? "成功" : "失败");
          //5、释放资源
          Druid.close(null, null, connection);
    
      }
    
      //增加内容
      @Test
      public void insert() throws Exception {
          //1、获得连接
          Connection connection = Druid.getConnection();
          //2、创建QueryRunner
          QueryRunner queryRunner = new QueryRunner();
          //3、组织sql
          String insert = "INSERT INTO actor VALUES(null,?,?,?,?)";
          //4、执行
          int insertRows = queryRunner.update(connection, insert, "张三", "男", "1999-08-24", "119");
          System.out.println(insertRows > 0 ? "成功" : "失败");
          //5、释放资源
          Druid.close(null, null, connection);
      }

    }

相关推荐
不会就选b6 小时前
MySQL之视图
数据库·mysql
>no problem<7 小时前
基于cola5.0的基础设施层的多数据库切换方案思路
数据库·spring boot·mybatisplus·cola5.0·数据库迁移适配
OceanBase数据库官方博客7 小时前
OceanBase 赋能央国企:从发电到用电的全链路业务承载
数据库·oceanbase
瀚高PG实验室8 小时前
pgsql-ogr-fdw
数据库·postgresql·瀚高数据库·highgo
IvorySQL8 小时前
PostgreSQL 技术日报 (6月5日)|PG19 Beta1 上线,PGConf.PL 2026开启征稿
数据库·postgresql·区块链
abcy0712138 小时前
pycharm python sqlalchemy mysql增删改查实例csdn
数据库·oracle
无风听海8 小时前
IndexedDB 深度指南 浏览器中的事务型对象数据库
前端·数据库
咋吃都不胖lyh9 小时前
langgraph基础示例
数据库
网管NO.110 小时前
子查询进阶|EXISTS/IN/ANY/ALL,优化查询效率
数据库·sql
云服务器租用费用10 小时前
2026年腾讯云OpenClaw(Clawdbot)+Skills云上部署及Windows本地集成轻松入门
运维·服务器·数据库·windows·云计算·腾讯云