超简单使用批处理(batch)操作数据库

批处理(batch)是什么

批处理的执行就好比快递员的工作:

未使用批处理的时候,快递员一次从分发点将一件快递发给客户;

使用批处理,则是快递员将所有要派送的快递都用车带到发放处派给客户。

批处理(batch)操作数据库

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

批处理操作数据库的过程主要是分两步:

1.将要执行的SQL语句保存

2.执行保存的SQL语句

如何实现批处理

  Statement和PreparedStatement都支持批处理操作,这里我们只说明PreparedStatement的批处理方式:

方法:

void addBatch()

将要执行的SQL先保存起来,先不执行

这个方法需要在在设置完所有的占位符之后调用

int[] executeBatch()

这个方法用来执行SQL语句,这个方法会将批处理中所有SQL语句执行

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

我们需要在mysql的url地址中加入一下参数:

rewriteBatchedStatements=true

                     例如:URL = "jdbc:mysql://127.0.0.1:3306/test?rewriteBatchedStatements=true";

演示实例:

1.创建一张新的数据表

     CREATE TABLE test (
id INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(50)
)

2、测试源码

              //向test表中插入10000条数据
@Test//测试批处理
public void testBatch(){
//向test表中插入10000条数据
Connection connection = null;
PreparedStatement ps = null;
try {
/*
                *获取数据库连接 数据库链接操作在此不进行赘述
                *原生数据库操作可参考:http://www.cnblogs.com/Mr-Dawei/p/7455324.html
                */
connection=XXXX;
//sql语句编写
String sql = "INSERT INTO test(uname) VALUES(?)";
//获取PrepareStatement
ps = connection.prepareStatement(sql);
//创建一个for循环,来设置占位符参数数
for(int i = 0; i < 10000 ;i++){
ps.setString(1,"test"+i);
//添加到批处理方法中,调用无参的,有参的是Statement来调用的!
ps.addBatch();
}
//获取一个时间戳 可以测试执行效率
long start = System.currentTimeMillis();
//统一执行执行批处理
ps.executeBatch();
//获取一个时间戳
long end = System.currentTimeMillis();
System.out.println("共花费了:"+(end-start));
} catch (SQLException e) {
e.printStackTrace();
} finally{
//逆序关闭资源
}
}

    通过操作结果我们可以清楚地看出其中批处理执行的效率提升多么明显

本人对批处理的了解浅显,若过路的诸位发现任何不对之处,还请多多之处。

超简单使用批处理(batch)操作数据库的更多相关文章

  1. 超简单jQuary链式操作代码实现手风琴效果

    超简单jQuery代码实现手风琴效果 HTML代码 <div id="cont"> <div> <p>人生若只如初见</p> < ...

  2. python学习 —— python3简单使用pymysql包操作数据库

    python3只支持pymysql(cpython >= 2.6 or >= 3.3,mysql >= 4.1),python2支持mysqldb. 两个例子: import pym ...

  3. mysql主从复制(超简单)

      mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  ...

  4. js操作数据库实现注册和登陆

    自从node-js出现之后,不只是java,php等后端语言可以操作数据库,进行内容的增删改查,javascript简本语言同样具备了该项技能,而且在node下,js具备了很强的操作性和代码的阅读性, ...

  5. JDBC操作数据库的学习(1)

    单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...

  6. JDBC操作数据库之批处理

    JDBC开发中,操作数据库需要和数据库建立连接,然后将要执行的SQL语句发送到数据库服务器,最后关闭数据库连接,都是按照这样的操做的,如果按照此流程要执行多条SQL语句,那么就要建立多个数据库连接,将 ...

  7. JDBC操作数据库的批处理

    在JDBC开发中,操作数据库需要与数据库建立连接,然后将要执行的SQL语句传送到数据库服务器,最后关闭数据库连接,都是按照这样一个流程进行操作的.如果按照该流程执行多条SQL语句,那么就需要建立多个数 ...

  8. Java_Web使用简单的批处理操作

    之前进行Web开发的时候使用的是myeclipse,但只用过的人都知道,由于其插件太多,而且有很多插件的功能根本就接触不到.所以导致一旦工程稍微大一点就会很卡,虽然之前也对其进行优化过,但还是觉得不太 ...

  9. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 1

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703679.html ------------------------------------ ...

随机推荐

  1. Laravel 中使用子域名(一个框架多项目)

    1.本地虚拟域名为:www.test.com,子域名为admin.test.com 2.apache环境中,配置apache的httpd-vhost.conf文件 <VirtualHost *: ...

  2. 不借助工具在浏览器中通过Web API执行Dynamics 365操作(Action)实例

    摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复262或者20170727可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...

  3. Qt5构建出错问题解决办法

    我之前用的Qt其他版本,因为一些原因我更换了Qt版本,从Qt5.9.1又更换到之前用的Qt5.3.2,但是发现无法build,问题提示如下: 19:54:03: 为项目untitled执行步骤 ... ...

  4. year:2017 month:7 day:27

    2017-07-27 JAVA 1:java分为三类:javase(桌面开发应用) javaee(企业级开发应用) javame(手机嵌入式开发应用) 2:jdk(java开发工具包),jre(jav ...

  5. POJ3660 Cow Contest floyd传递闭包

    Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming con ...

  6. [转]为什么大型网站前端使用 PHP 后台逻辑用 Java?

    最近纠结了一下,如果开发一个大型的网站,我到底应该使用php还是jsp,后台到底使用php还是用java,我的选择要么是php要么是java,因为我喜欢linux.unix,当然window平台也必须 ...

  7. OC和JS的交互

    1.引入类拓展UIWebView+TS_JavaScriptContext, 这个类拓展是能在JSCotext出现的时候就可以拿到. 因为一般情况下JSCotext在webViewDidFinishL ...

  8. HTML 基本标签02

    02-html基本标签 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  9. HTML 笔记 基础1

    html 笔记 20170807 晴 <h1>标题</h1> 标题分为6个 从1到6字体逐渐变小 <p>段落</p> <html> < ...

  10. vi替换方法总结

    1. 基本的替换 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ ...