批处理指的是一次操作中执行多条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. 微信小游戏 小程序与小游戏获取用户信息接口调整 wx.createUserInfoButton

    参考: 小程序•小故事(6)——微信登录能力优化 小程序•小故事(4)——获取用户信息 本篇主要是讲微信getUserInfo接口不再出现授权弹框 那么原来getUserInfo是怎么样?修改之后又是 ...

  2. c# Sockect 通信

    1.Server using System; using System.Collections.Generic; using System.Text; //添加Socket类 using System ...

  3. Eclipse常用快捷键 及 不格式化注释

    eclipse不格式化注释 - [自写] 2007-08-15   刚才在Eclipse3.2上写东西,我写好的注释,整整齐齐的,我一格式化代码,就变得七七八八的了.   试着在Perferences ...

  4. Unity3D笔记八 Unity生命周期及动画学习

    Unity脚本从唤醒到销毁有着一套比较完善的生命周期,添加任何脚本都必须遵守自身生命周期法则.下面介绍一下生命周期中由系统自身调用的几个比较重要的方法.  Update(){}.正常更新,用于更新逻 ...

  5. mybatis按姓名或手机号搜索

    1.AND ((USER_NAME LIKE '%'||#{searchKey}||'%') OR (MOBILE_PHONE LIKE '%'||#{searchKey}||'%'))2. < ...

  6. vue 缓存的keepalive页面刷新数据

    用到这个的业务场景是这样的: a页面点击新建列表按钮进入到新建的页面b,填写b页面并点击b页面确认添加按钮,把这些数据带到a页面,填充到列表(数组),可以添加多条, 点击这条的时候进入到编辑页面,确认 ...

  7. RAID和LVM磁盘阵列

    RAID磁盘冗余阵列 CPU的处理性能保持着高速增长,Intel公司在2017年最新发布的i9-7980XE处理器芯片更是达到了18核心36线程.但与此同时,硬盘设备的性能提升却不是很大,因此逐渐成为 ...

  8. ffmpeg 推送、保存rtmp 流命令

    1.将文件当做直播送至live ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName 2.将直播媒体保存至本 ...

  9. WebConfig配置详解大全

    <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...

  10. 拨开障目的叶,一览CMDB庐山真面目

    人们往往用"一叶障目,不见泰山"来形容一个人被局部现象所迷惑,看不到事物发展的整体脉络,从而做出一些不是十分正确的决策.小编觉得对于运维何尝不是这样呢. 大多数企业资产配置维护的现 ...