使用apache-dbutils + druid 完成 dml (update, insert, delete)

package day39.datasource;

import org.apache.commons.dbutils.QueryRunner;
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;

/**
 * @Author: monian
 * @Tips: Wo yi wu ta,wei shou shu er!
 * @Date: 2023/11/16 16:02
 */
@SuppressWarnings({"all"})
public class DBUtils_USE {
    @Test
    //使用apache-DBUtils 工具类 + druid 完成对表的 crud 操作
    public void testQueryMany() throws SQLException {//返回结果是多行的情况
        // 1. 得到连接
        Connection connection = JDBCUtilsByDruid.getConnection();
        // 2. 使用DBUtils 类和接口,先引入DBUtils 相关的jar,加入到本Project
        // 3. 创建 QueryRunner
        QueryRunner queryRunner = new QueryRunner();
        // 4. 就可以执行相关的方法,返回ArrayList 结果集
        String sql = "select id ,name from account where id >= ?";
        /*
            1. query 方法就是执行sql语句,得到resultset ----封装到 --> ArrayList 集合中
            2. 返回集合
            3. connection: 连接
            4. sql: 执行的sql语句
            5. new BeanListHandler<>(Actor .class): 在将resultset -> Actor 对象 -> 封装到 ArrayList
               底层使用反射机制 去获取Actor 类的属性,然后进行封装
            6. 1 就是给sql语句中的? 赋值,可以有多个值,因为是可变参数Object...params
         */
        List<Actor> list =
                queryRunner.query(connection, sql, new BeanListHandler<>(Actor.class), 1);
        System.out.println("输出集合的信息");
        for (Actor actor : list) {
            System.out.println(actor);
        }
        //释放资源
        JDBCUtilsByDruid.close(null, null, connection);
    }

    @Test
    //演示 apache-dbutils + druid 完成 返回的结果是单行记录(单个对象)
    public void testQuerySingle() throws SQLException {

        // 1. 得到连接 (druid)
        Connection connection = JDBCUtilsByDruid.getConnection();
        // 2. 使用 DBUtils 类和接口 ,先引入DBUtils 相关的jar ,加入到本Project
        // 3. 创建 QueryRunner
        QueryRunner queryRunner = new QueryRunner();
        // 4. 就可以执行相关的方法,返回ArrayList 结果集
        String sql = "select * from account where id = ?";
        // 因为我们返回的是单行记录<------> 单个对象,使用的Hander 是 BeanHandler
        List<Actor> query = queryRunner.query(connection, sql, new BeanListHandler<>(Actor.class), 2);
        System.out.println(query);

        //释放资源
        JDBCUtilsByDruid.close(null, null, connection);
    }

    //演示apache-dbutils = druid 完成 查询结果是单行单列 - 返回的就是object
    @Test
    public void testScalar() throws SQLException {
        // 1. 得到连接 (druid)
        Connection connection = JDBCUtilsByDruid.getConnection();
        // 2. 使用 DBUtils 类和接口,先引入DBUtils 相关的jar,加入到本Project
        // 3. 创建 QueryRunner
        QueryRunner queryRunner = new QueryRunner();
        // 4. 就可以执行相关的方法,返回单行单列
        String sql = "select name from account where id = ?";
        Object obj = queryRunner.query(connection, sql, new ScalarHandler(), 2);
        System.out.println(obj);
        //释放资源
        JDBCUtilsByDruid.close(null, null, connection);
    }

    @Test
    // 演示apache-dbutils + druid 完成 dml (update, insert, delete)
    public void testDML() throws SQLException {

        // 1. 得到 连接(deuid)
        Connection connection = JDBCUtilsByDruid.getConnection();
        // 2. 使用 DBUtils 类和接口,先引入DBUtils相关的jar,加入到本Project
        // 3. 创建 QueryRunner
        QueryRunner queryRunner = new QueryRunner();

        // 4. 这里组织 sql 完成 update, insert delete
        String sql = "update account set name = ? where id = ?";
        String sql2 = "update account set balance = ? where id = ?";
        String sql3 = "insert into account values(null, ?, ?)";
        String sql4 = "delete from account where id = ?";
        /*
            1. 执行 dml 操作是 queryRunner.update()
            2. 返回的值是受影响的行数 (affected:受影响)
         */
        int count = 0;
        int affectedRow = queryRunner.update(connection, sql, "腾格尔", 1);
        int affectedRow2 = queryRunner.update(connection, sql2, 6666, 1);
        int affectedRow3 = queryRunner.update(connection, sql3, "李荣浩", 235656);
        int affectedRow4 = queryRunner.update(connection, sql4, 1);
        count = affectedRow + affectedRow2 + affectedRow3 + affectedRow4;
        System.out.println(count > 0 ? "执行成功" : "执行没有影响到表");

        //释放资源
        JDBCUtilsByDruid.close(null, null, connection);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值