【JDBC】连接数据库,执行批处理操作。

CSDN话题挑战赛第2期
参赛话题:学习笔记

在这里插入图片描述

在这里插入图片描述

求关注⚽ 作者🥇 .29. 🥇 的✔博客主页✔

JDBC专栏

(点击进入专栏)
【1】idea添加mysql-jar包
【2】使用IDEA连接数据库,执行增删改操作。
【3】IDEA连接数据库,执行查询操作,返回结果集并输出。
【4】JDBC实战 水果库存系统 [设计阶段]
【5】 水果库存系统 [功能实现①](接口实现类FruitDAOImpl)
【6】 水果库存系统 [功能实现②] 功能完善+使用效果
【7】 水果库存系统 [代码优化]
【8】连接数据库,执行批处理操作。
【9】数据库连接池:德鲁伊druid的使用


一、什么是批处理

批处理操作,也就是采用JAVA的批量更新机制,使用批量更新机制可以将多条语句一次性提交给数据库进行批量处理,而不用逐条提交。



二、怎么使用批处理

1.在通信地址中设置参数(批处理第一步)

想要使用批处理操作,我们需要在连接数据库的通信地址(URL)中添加参数:rewriteBatchedStatements

实际操作中需要将参数rewriteBatchedStatements设置为true

String URL = "jdbc:mysql://localhost:3306/fruitdb?rewriteBatchedStatements=true";

需要注意的是,通信地址URL中首次添加参数需要在参数开头添加符号?,后续添加参数则用符号&连接。


2.连接数据库,预处理,参数填充

接下来就是连接数据库的常规的流程了(当复习一下):
。。。
除URL外,我们还需要准备 用户名 以及 密码

String USER = "root" ; //用户名
String PSW = "123456" ;//密码

。。。

加载驱动

String DRIVER = "com.mysql.cj.jdbc.Driver";
//加载驱动
Class.forName(DRIVER);

使用驱动管理器连接数据库

//数据库管理器,连接数据库
connection = DriverManager.getConnection(URL, USER, PSW);

编写SQL语句
(以插入操作为例)

String sql = "insert into t_fruit values(0,?,?,?,?)";

创建预处理对象

//创建预处理命令对象
PreparedStatement psmt = connection.prepareStatement(sql);

填充占位符 ?

psmt.setString(1,"石榴"+i);
psmt.setInt(2,8);
psmt.setInt(3,64);
psmt.setString(4,"石榴,在广东也可以叫鸡屎果");

3.进行批处理操作 (批处理第二步)

在一开始,我们先了解一下批处理要用到的方法。

批处理方法(API):
addBatch():添加需要批处理的SQL语句;
executeBatch():执行批处理语句;
clearBatch():清空批处理包的语句;

批处理4000个SQL语句,我们满1000个SQL语句执行一次,然后清空任务列表再继续。

        for(int i = 0;i < 4000;++i){
            psmt.setString(1,"石榴"+i);
            psmt.setInt(2,8);
            psmt.setInt(3,64);
            psmt.setString(4,"石榴,在广东也可以叫鸡屎果");
            //批处理操作
            psmt.addBatch();
            if(i % 1000 == 0){//如果任务繁多,分批次执行,每次执行完清空任务列表
                psmt.executeBatch();
                psmt.clearBatch();
            }
        }

4.关闭资源

        //释放资源(关闭连接,先关闭psmt,再关闭connection)
        psmt.close();       //关闭预处理对象
        connection.close(); //关闭连接对象


三、完整代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Arrays;

/**
 * @author .29.
 * @create 2022-09-15 21:49
 */
public class Demo01Batch {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
    String URL = "jdbc:mysql://localhost:3306/fruitdb?rewriteBatchedStatements=true";
    String USER = "root" ; //用户名
    String PSW = "123456" ;//密码
        //加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //批处理操作一、添加参数rewriteBatchedStatements
        //2.通过驱动管理器连接对象:如果需要执行批处理任务,需要添加参数rewriteBatchedStatements=true
        //url表示跟数据库通信的地址
        //如果url中需要带参数,使用?连接
        //如果需要带多个参数,第二个参数开始用&连接

        String sql = "insert into t_fruit values(0,?,?,?,?)";

        //创建预处理命令对象
        PreparedStatement psmt = connection.prepareStatement(sql);
        //填充参数
        for(int i = 0;i < 10;++i){
            psmt.setString(1,"石榴"+i);
            psmt.setInt(2,8);
            psmt.setInt(3,64);
            psmt.setString(4,"石榴,在广东也可以叫鸡屎果");
            //批处理操作二
            psmt.addBatch();
            if(i % 1000 == 0){//如果任务繁多,分批次执行,每次执行完清空任务列表
                psmt.executeBatch();
                psmt.clearBatch();
            }
        }

        //释放资源(关闭连接,先关闭psmt,再关闭connection)
        psmt.close();
        connection.close();
    }
}

求关注⚽ 作者🥇 .29. 🥇 的✔博客主页✔

在这里插入图片描述

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.29.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值