[JDBC]批处理

一.code

复制代码
import org.junit.jupiter.api.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class TestBatch {
    @Test
    public void test1()throws Exception{
        //没有用批处理的功能
        long start = System.currentTimeMillis();

        //建立连接
        String url = "jdbc:mysql://localhost:3306/jdbctest";
        String user = "root";
        String pwd = "123456";
        Connection connection = DriverManager.getConnection(url, user, pwd);

        //编写sql
        String sql = "insert into t_department values(null,?,?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        for(int i=1; i<=2000; i++){
            preparedStatement.setObject(1, "模拟部门名称" + i );
            preparedStatement.setObject(2, "模拟部门简介" + i );
            preparedStatement.executeUpdate();
            //执行2000遍
        }
        preparedStatement.close();
        connection.close();

        long end = System.currentTimeMillis();
        System.out.println("耗时:" +(end-start));
        //耗时:6554
    }

    @Test
    public void test2()throws Exception{
        //使用批处理功能
        long start = System.currentTimeMillis();

/*        MySQL服务器端,默认批处理功能没有开启。需要通过参数告知mysql服务器,开启批处理功能。
        在url后面再加一个参数 rewriteBatchedStatements=true*/
        //建立连接
        String url = "jdbc:mysql://localhost:3306/jdbctest";
        String pwd = "123456";
        String user = "root";
        Connection connection = DriverManager.getConnection(url, user, pwd);

        //编写sql
        String sql = "insert into t_department values(null,?,?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        for(int i=2001; i<=4000; i++){
            preparedStatement.setObject(1, "模拟部门名称a" + i );
            preparedStatement.setObject(2, "模拟部门简介b" + i );
            preparedStatement.addBatch();//先攒着
        }
        preparedStatement.executeBatch();//执行批处理功能

        preparedStatement.close();
        connection.close();

        long end = System.currentTimeMillis();
        System.out.println("耗时:" +(end-start));//耗时:729
    }
}
相关推荐
一定要AK7 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao7 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao8 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
迷藏4948 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
wuxinyan1239 小时前
Java面试题47:一文深入了解Nginx
java·nginx·面试题
新知图书9 小时前
搭建Spring Boot开发环境
java·spring boot·后端
冰河团队9 小时前
一个拉胯的分库分表方案有多绝望?整个部门都在救火!
java·高并发·分布式数据库·分库分表·高性能
洛_尘9 小时前
Java EE进阶:Linux的基本使用
java·java-ee
宸津-代码粉碎机9 小时前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python
MaCa .BaKa9 小时前
47-心里健康咨询平台/心理咨询系统
java·spring boot·mysql·tomcat·maven·intellij-idea·个人开发