前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JDBC】连接数据库,执行批处理操作。

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

作者头像
.29.
发布2022-11-15 14:05:06
5810
发布2022-11-15 14:05:06
举报
文章被收录于专栏:个人技术博客

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

代码语言:javascript
复制
String URL = "jdbc:mysql://localhost:3306/fruitdb?rewriteBatchedStatements=true";

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


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

接下来就是连接数据库的常规的流程了(当复习一下):

。。。

除URL外,我们还需要准备 用户名 以及 密码

代码语言:javascript
复制
String USER = "root" ; //用户名
String PSW = "123456" ;//密码

。。。

加载驱动

代码语言:javascript
复制
String DRIVER = "com.mysql.cj.jdbc.Driver";
//加载驱动
Class.forName(DRIVER);

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

代码语言:javascript
复制
//数据库管理器,连接数据库
connection = DriverManager.getConnection(URL, USER, PSW);

编写SQL语句

(以插入操作为例)

代码语言:javascript
复制
String sql = "insert into t_fruit values(0,?,?,?,?)";

创建预处理对象

代码语言:javascript
复制
//创建预处理命令对象
PreparedStatement psmt = connection.prepareStatement(sql);

填充占位符 ?

代码语言:javascript
复制
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语句执行一次,然后清空任务列表再继续。

代码语言:javascript
复制
        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.关闭资源

代码语言:javascript
复制
        //释放资源(关闭连接,先关闭psmt,再关闭connection)
        psmt.close();       //关闭预处理对象
        connection.close(); //关闭连接对象


三、完整代码

代码语言:javascript
复制
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();
    }
}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JDBC专栏
    • 批处理
    • 一、什么是批处理
    • 二、怎么使用批处理
      • 1.在通信地址中设置参数(批处理第一步)
        • 2.连接数据库,预处理,参数填充
          • 3.进行批处理操作 (批处理第二步)
            • 4.关闭资源
            • 三、完整代码
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档