批处理指的是一次操作中执行多条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. 批量远程执行linux服务器程序--基于pxpect(多进程、记日志版)

    #!/usr/bin/python '''Created on 2015-06-09@author: Administrator''' import pexpect import os,sys fro ...

  2. mycelipse中关于编码的配置

    (1)修改工作空间的编码方式: Window->Preferences->General->Workspace->Text file Encoding在Others里选择需要的 ...

  3. supervisor 配置篇

    1,配置管理进程 进程管理配置参数,不建议全都写在supervisord.conf文件中,应该每个进程写一个配置文件放在include指定的目录下包含进supervisord.conf文件中. 1&g ...

  4. jquery 实现点击按钮后出现倒计时效果(用于实现发送手机验证码、邮箱验证码)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. c# 网站 vislual studio

    一.新建 1.新建网站 在 菜单栏-->新建-->项目-->选项编辑语言-->web-->先前版本-> 2.新建母板: *.master文件是母板页文件.添加新项时 ...

  6. SQLite随机获取一行数据

    Mysql中随机获取一行数据: SELECT * FROM table ORDER BY RAND() limit 1 SQLite中随机获取一行数据: SELECT * FROM table ORD ...

  7. StartUML-时序图

  8. 一致性hash 大众点评订单分库分表实践

    井底之蛙 https://mp.weixin.qq.com/s?src=3&timestamp=1543228894&ver=1&signature=uF6nV0yYseJ55 ...

  9. django haystack

    # coding=utf-8 from haystack import indexes from yw_asset.models import * class AssetIndex(indexes.S ...

  10. cookie.setPath()的用法

    正常的cookie只能在一个应用中共享,即:一个cookie只能由创建它的应用获得. 可在同一应用服务器内共享cookie的方法:设置cookie.setPath("/");  ( ...