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

简介: 学习连接数据库,执行批处理操作。

一、什么是批处理


批处理操作,也就是采用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. 🥇 的✔博客主页✔

微信图片_20221029111446.jpg

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
11月前
|
SQL Java 数据库连接
除了JDBC,还有哪些常见的数据库访问技术?
除了JDBC,还有哪些常见的数据库访问技术?
915 2
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
数据库连接 应用服务中间件 PHP
|
安全 Linux 网络安全
YashanDB数据库服务端SSL连接配置
YashanDB支持通过SSL连接确保数据传输安全,需在服务端生成根证书、服务器证书及DH文件,并将根证书提供给客户端以完成身份验证。服务端配置包括使用OpenSSL工具生成证书、设置SSL参数并重启数据库;客户端则需下载根证书并正确配置环境变量与`yasc_env.ini`文件。注意:启用SSL后,所有客户端必须持有根证书才能连接,且SSL与密码认证独立运行。
|
Java 数据库连接 数据库
【YashanDB知识库】WAS配置YashanDB JDBC连接
【YashanDB知识库】WAS配置YashanDB JDBC连接
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
526 13
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1995 11
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
638 69