批处理指的是一次操作中执行多条SQL语句,相比于一次一次执行效率会提高很多

  • 批处理主要是分两步:
  1. 将要执行的SQL语句保存
  2. 执行SQL语句

Statement和PreparedStatement都支持批处理操作,PreparedStatement的批处理方式:

  • 方法:

    • void addBatch():将要执行的SQL先保存起来,先不执行,这个方法在设置完所有的占位符之后调用
    • int[] executeBatch():这个方法用来执行SQL语句,这个方法会将批处理中所有SQL语句执行

mysql默认批处理是关闭的,所以还需要去打开mysql的批处理:

rewriteBatchedStatements=true

需要将以上的参数添加到mysql的url地址中,不加的话,也能执行,但并不是真正的批处理,很慢。

注意:低版本的mysql-jdbc驱动也不支持批处理,一般都是在修改的时候使用批处理,查询的时候不使用!(mysql-connector-java-5.1.7-bin.jar不支持,mysql-connector-java-5.1.42.jar支持)

1、创建一张新的数据表

CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(50)
)

2、引入批处理

 @Test//测试批处理
public void testBatch(){
//向student表中插入10000条数据
//准备两个变量
Connection connection = null;
PreparedStatement ps = null;
try {
conn = DBUtil.getConn();//获取数据库连接
String sql = "INSERT INTO student(NAME) VALUES(?)";//准备SQL模板
ps = conn.prepareStatement(sql);//获取PrepareStatement
//创建一个for循环,来设置占位符
for(int i = 0; i < 1000 ;i++){
ps.setString(1,"stu"+i);//填充占位符
ps.addBatch();//添加到批处理方法中,调用无参的方法,有参的是Statement来调用的!
} long start = System.currentTimeMillis();//获取一个时间戳
ps.executeBatch();//执行批处理
long end = System.currentTimeMillis();//获取一个时间戳
System.out.println("用时:"+(end-start));
} catch (SQLException e) {
e.printStackTrace();
}
}

批处理执行效率高,资源利用率好!

插入1000条数据(没有开启批处理):13120ms

插入1000条数据(开启批处理):517ms

DBUtil工具类 --->资源目录--->工具类--->数据库操作工具类

mysql-connector-java-5.1.42.jar --->资源目录--->jar包资源--->mysqlConnection jar包

sql批处理(batch)的简单使用的更多相关文章

  1. 玩转Spring全家桶笔记 03 Spring的JDBC操作以及SQL批处理的实现

    1 spring-jdbc core JdbcTemplate 等相关核心接口和类(核心) datesource 数据源相关的辅助类(内嵌数据源的初始化) object 将基本的JDBC操作封装成对象 ...

  2. JDBC 中的事务和批处理 batch

    JDBC事务处理: 事务处理一般在事务开始前把事务提交设置为false 所有DML语句执行完成后提交事务 demo: package com.xzlf.jdbc; import java.sql.Co ...

  3. JDBC06 其他操作及批处理Batch

    灵活指定SQL语句中的变量 -PreparedStatement 对存储过程进行调用 -CallableStatement 运用事务处理 -Transaction 批处理 -Batch -对于大量的批 ...

  4. SQL点滴28—一个简单的存储过程

    原文:SQL点滴28-一个简单的存储过程 在表中写入一条数据同事要向另外一个表中写入信息,所以会使用到事务.实际使用的时候还会一次向一个表中吸入多条数据,下面的存储过程,将字符串拆分成数组然后写入到表 ...

  5. SQL点滴3—一个简单的字符串分割函数

    原文:SQL点滴3-一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,”  遇到其他情况只要稍加修改就好了 CREATE FUN ...

  6. SQL Server授权购买简单介绍

    SQL Server授权购买简单介绍 之前有同事问我,使用盗版序列号的SQL Server到底有没有性能限制,之前本人一直没有深入研究过,后来经过一番资料搜集和查证,汇总成这篇文章 微软的SQL Se ...

  7. SQL批处理与事务控制

    今天我想要分享的是关于数据库的批处理与事务的控制.批处理对于项目的实际应用有非常大的具体意义. 一.批处理部分 首先我们新建一个表: create table t3( id int primary k ...

  8. 批处理(Batch)---批处理脚本。

    批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件的扩展名为bat .目前比较常见的批 ...

  9. FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑

    FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 1.基本介绍 对于每一个从事音视频技术开发的工程师,想必没 ...

随机推荐

  1. 单例模式与静态变量在PHP中 (转载)

    在PHP中,没有普遍意义上的静态变量.与Java.C++不同,PHP中的静态变量的存活周期仅仅是每次PHP的会话周期,所以注定了不会有Java或者C++那种静态变量. 所以,在PHP中,静态变量的存在 ...

  2. CVE-2017-1000117命令注入验证

    首先,我们来看第一个问题,就是ssh的一种操作. ssh -oProxyCommand=gnome-calculator xxx 问题的本质在于ssh会把//后的host那么部分带-号的按照参数指令去 ...

  3. Navicat 创建 Mysql 函数

    1.点击新建函数 2.写函数,保存为v1 3.调用 SELECT id,v1(id) from 表

  4. Oracle数据类型clob和blob

    clob(size)变长 字符型大对象,最大8tb 应用场景:如果varchar2不够用了使用clob blob(size)变长 二进制数据,可以存放图片声音 8tb 但是,实际工作中很少把图片和声音 ...

  5. C#实现像Git那样计算Hash值

    从Git Tip of the Week: Objects一文中得知,Git是这样计算提交内容的Hash值的: Hash算法用的是SHA1 计算前,会在内容前面添加"blob 内容长度\0& ...

  6. Oracle管理监控之测试环境清理用户脚本

    --PL/SQL块删除用户 declare  cursor cur_duser is    select sid, serial# from v$session where username in ( ...

  7. linux memory dump--http://www.forensicswiki.org/wiki/Tools:Memory_Imaging

    Linux provides two virtual devices for this purpose, '/dev/mem' and '/dev/kmem', though many distrib ...

  8. MySQL 通用查询日志和慢查询日志分析

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句.2)慢查询 ...

  9. GraphQL:一种不同于REST的接口风格

    从去年开始,JS算是完全踏入ES6时代.在React相关项目中接触到了一些ES6的语法.这次接着GraphQL这种新型的接口风格,从后端的角度接触ES6. 这篇文章从ES6的特征讲起,打好语法基础:然 ...

  10. linux进程间通讯的几种方式的特点和优缺点

    # 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系通常是指父子进程关系.# 有名管道 (named pipe) : 有名管道也是 ...