栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Apache——DBUtils

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Apache——DBUtils

问题引入
  1. 关闭 connection 后,resultSet 结果集无法使用
  2. resultSet 不利于数据的管理
  3. commons——dbutils 是Apache组织提供的一个开源 JDBC 工具类库,它是对JDBC的封装,使用 dbutils 能极大简化 JDBC 编码的工作量
DBUtils类
  1. QueryRunner类:该类封装了sql的执行,是线程安全的,可以实现增删改查以及批处理
  2. ResultSetHandler接口:该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式

package com.ftn.jdbc.JDBCutils;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.jupiter.api.Test;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

//使用 apache-DBUtils 工具类 + Druid 连接池完成对表的 crud 操作
public class DBUtils_Use {

    //使用 apache-DBUtils 工具类 + Druid 连接池完成返回的结果是 resultSet 结果集
    @Test
    public void testDBUtils_many() throws SQLException {
        //1.得到连接
        Connection connection = JDBCUtilsByDruid.getConnection();
        //2.使用 DBUtils 相关类和接口,先引入相关的 dbutils.jar包,加入本项目
        //3.再创建 QueryRunner
        String sql = "select * from actor where id>=?";
        QueryRunner queryRunner = new QueryRunner();
        //4.执行相关方法,返回 ArrayList 结果集
        //  1.query 方法就是执行了 sql 语句,将返回的 resultSet 结果集封装到 ArrayList 集合中
        //  2.new BeanListHandler<>(Actor.class): 在将 resultSet->Actor 对象->封装到 ArrayList
        //  底层使用反射机制获取 Actor类的属性,然后进行封装
        //  3.底层得到的 resultSet 以及 preparedstatement 会在 query 中关闭
        
        List list = queryRunner.query(connection, sql, new BeanListHandler<>(Actor.class), 2);

        //5.输出集合的信息
        for (Actor actor : list) {
            System.out.print(actor);
        }

        JDBCUtilsByDruid.close(null, null, connection);
    }

    //使用 apache-DBUtils 工具类 + Druid 连接池完成返回的结果是单行记录,返回类型为实体类 Actor
    @Test
    public void testDBUtils_Single() throws SQLException {
        //1.得到连接
        Connection connection = JDBCUtilsByDruid.getConnection();
        //2.使用 DBUtils 相关类和接口,先引入相关的 dbutils.jar包,加入本项目
        //3.再创建 QueryRunner
        String sql = "select * from actor where id=?";
        QueryRunner queryRunner = new QueryRunner();
        //返回单条记录,即单个对象,使用的 Handler是 BeanHandler
        Actor actor = queryRunner.query(connection, sql, new BeanHandler<>(Actor.class), 1);
        System.out.println(actor);
        JDBCUtilsByDruid.close(null, null, connection);
    }

    //使用 apache-DBUtils 工具类 + Druid 连接池完成返回的结果是单行单列记录,返回类型为 Object
    @Test
    public void testDBUtils_Scalar() throws SQLException {
        //1.得到连接
        Connection connection = JDBCUtilsByDruid.getConnection();
        //2.使用 DBUtils 相关类和接口,先引入相关的 dbutils.jar包,加入本项目
        //3.再创建 QueryRunner
        String sql = "select name from actor where id=?";
        QueryRunner queryRunner = new QueryRunner();
        //返回单条记录,即单个对象,使用的 Handler是 BeanHandler
        Object query = queryRunner.query(connection, sql, new ScalarHandler<>(), 1);
        System.out.println(query);
        JDBCUtilsByDruid.close(null, null, connection);
    }

    //使用 apache-DBUtils 工具类 + Druid 连接池完成 DML 操作
    @Test
    public void testDBUtils_DML() throws SQLException {
        //1.得到连接
        Connection connection = JDBCUtilsByDruid.getConnection();
        //2.使用 DBUtils 相关类和接口,先引入相关的 dbutils.jar包,加入本项目
        //3.再创建 QueryRunner
        String sql = "update actor set name='jary' where id=?";
        QueryRunner queryRunner = new QueryRunner();

        //  (1).执行 DML 操作是 queryRunner.update()
        //  (2).返回值是受影响的行数
        int i = queryRunner.update(connection, sql, 1);
        System.out.println(i>0?"执行成功":"执行没有影响到表");
        JDBCUtilsByDruid.close(null, null, connection);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349348.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号