批处理指的是一次操作中执行多条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. Struts2中的OGNL详解 《转》

    首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的 ...

  2. JAVA内存构成详解

    java memory = direct memory(直接内存) + jvm memory(MaxPermSize +Xmx)   1)直接内存跟堆 直接内存则是一块由程序本身管理的一块内存空间,它 ...

  3. yii2中的别名路径,@webroot , @web

    定义在yii\web\Application 的bootstrap中, Yii::setAlias('@webroot', dirname($request->getScriptFile())) ...

  4. Linux定时检测内存,若使用率超过指标,重启Tomcat并清空内存

    cd /usr/local vim cleanCacheTime.sh 把以下代码粘贴进去 #!/bin/bash echo "start SyncCleanCache.sh..." ...

  5. model 模型层

    using System; namespace MODEL { [Serializable] /// <summary> /// 作者: liuhaitao /// 描述: 实体层 -- ...

  6. 05StuList.aspx(学生列表)

    05StuList.aspx  加载学生列表(前天代码) <%@ Page Language="C#" AutoEventWireup="true" Co ...

  7. C# get post 的方法

    #region GET POST /// <summary> /// Get String data = GetString(URL , "PKEY=" + Pkeyl ...

  8. 修改Docker默认存储位置的方法

    在日常使用中由于我们的根目录通常都比较小,如果想大量存储容器镜像的话很容易导致根目录写满 docker 默认的数据目录是/var/lib/docker 我们想要移动数据目录可以按照下面说明操作即可. ...

  9. 快速定位oracle故障-恩墨

    首先我们要明白一点,所谓的故障,意味着相对来讲比较严重.也就是可能比不同的问题要严重一些,比如锁等待. 要能够快速的定位和解决问题,恢复业务正常:首先我们需要了解Oracle的一些常见的故障有哪些. ...

  10. 系统中同时有 python2和 python3,怎么让 ipython 选择不同的版本启动?

    已经安装的情况下: > which ipython /usr/local/bin/ipython > cat /usr/local/bin/ipython  #!/usr/local/op ...