目录


业务场景:

当需要向数据库中发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率;

使用JDBC进行批处理,实现批处理有两种机制;


第一种方式


Statement.addBatch(sql1) ; Statement.addBatch(sql2) ; ... // 内部是 Statement对象维护着一个list对象,保存着批处理的sql语句 ; executeBatch(); // 执行批处理SQL语句: clearBatch(); // 清楚批处理命令:即清除 list 中的sql语句 ;

优点:可以向数据库发送多条不同的SQL语句 ;

缺点:SQL语句没有 预编译当多条SQL语句仅仅是参数不同的时候,也必须呆呆的写多条;


第二种方式



    // 先将预编译好的 sql 保存到 prepareStatement对象中,这时候还没有存进 list 里面 ;

    prepareStatement(sql);

    // 每次调用prepareStatement对象的setxxxx()方法,都覆盖掉之前的sql语句 ;

    // 但是我们调用setxxxx方法之前,就会将之前的sql语句添加进内部的list里面,因此覆盖也没有事

    PreparedStatement.setXXXX(....) ;

    // 将预编译的sql语句,加到PreparedStatment对象内部的list中;

    PreparedStatement.addBatch();   

    // 将预编译的sql语句,加到PreparedStatment对象内部的list中;

    PreparedStatement.addBatch();   

    executeBatch();    // 执行批处理SQL语句:

    clearBatch();      // 清楚批处理命令:

优点:发送是预编译的SQL语句,执行效率高;

缺点:只能应用在SQL语句相同,但是参数不同的批处理里面;适用于在同一张表中进行批量数据的操作;


批处理中的 update() 方法

用批处理操作数据库,update() 方法返回的是一个数组,里面记录着每一条SQL语句影响的行数 ;


注意事项

在进行批处理的时候,一个批不要太大,否则会内存溢出,可以循环批处理;


备注:

mysql插入一千万条数据大概要花3小时,而oracle只需要花6分钟; 果然收费还是有收费的道理的 ;

(十七)使用JDBC进行批处理的更多相关文章

  1. JDBC的批处理操作三种方式 pstmt.addBatch()

    package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import java.sql.Connection; import java ...

  2. JDBC进行批处理

    转自 http://mousepc.iteye.com/blog/1131462 业务场景:当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升 ...

  3. 使用JDBC进行批处理

    在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...

  4. JavaWeb学习总结(十一)--JDBC之批处理

    一.批处理的介绍 在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率.批处理只针对更新(增.删.改)语句,批 ...

  5. javaweb学习总结(三十六)——使用JDBC进行批处理

    在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...

  6. JDBC的批处理操作三种方式

    SQL批处理是JDBC性能优化的重要武器,批处理的用法有三种. package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import ...

  7. JDBC之批处理

    JDBC之批处理 现在有这么一个需求,要求把2000条记录插入表中,如果使用java代码来操作,我们可以使用Statement或者PreparedStatement来实现,通过循环来把SQL语句一条又 ...

  8. JavaWeb学习笔记(十五)—— 使用JDBC进行批处理

    一.什么是批处理 批处理就是一批一批的处理,而不是一个一个的处理! 当你有10条SQL语句要执行时,一次向服务器发送一条SQL语句,这么做效率上很差!处理的方案是使用批处理,即一次向服务器发送多条SQ ...

  9. JDBC进行批处理Batch

    在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和pr ...

随机推荐

  1. C语言学习笔记9-指针

    1.指针基础 NULL为预处理器变量,是从C继承下来的,该变量在cstdlib头文件中定义 2.指针函数与函数指针 3.指针数组与数组指针 4.

  2. Java学习之路(2)

    Java中的标识符及命名规范 一.标识符可以使用字母.下划线.$.数字及其他们的组合命名,不能以数字开始,其他的3中可以起头.关键字和保留字不能作为标识符使用; 二.Java是大小写敏感的,也就是说i ...

  3. iOS开发 Error: CGImageProviderCreate: invalid image provider size

    一般可拉伸的图片(俗称点9图片)会放到images.xcassets目录里,然后对图片进行Slicing,但是当对一张图片进行slicing的left和right都是0的话,在iOS7.0上运行会出现 ...

  4. Docker安装mysql5.6

    1.docker hub 上查找mysql镜像 2.在docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.6 3.使用mysql5.6创建容器(也叫运行镜像) 4.交互运行,进入m ...

  5. 表单 Flask-WTF - 校验器

    1 wtforms内置的校验器 Class wtforms.validators.DataRequired(message=None)此验证器将会检测field是否输入了数值,实际上是进行了if fi ...

  6. 冲刺总结——Day7

    [今日进展] 代码整合 码云链接:https://gitee.com/jxxydwt1999/20175215-java/tree/master/GoldPoint 功能测试 注册 登录 运行 [燃尽 ...

  7. websocket原理、为何能实现持久连接?

    WebSocket 是 HTML5 一种新的协议.它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 HTTP 一样通过 TCP 来传输数据,但是 ...

  8. springboot自定义异常RESTful返回异常

    1.自定义异常类 package com.zhx.common.exception; import com.zhx.common.model.ErrorCode; /** * @Author: Sim ...

  9. 第11组 Beta冲刺(2/5)

    第11组 Beta冲刺(2/5)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/11997386.html 作业博客 https://edu. ...

  10. PYTHON -----pyinstaller的安装

    这几天一直在安装pyinstaller库,发现了一个好方法 因为一直使用pip安装,我只能介绍一下pip安装pyinstaller的方法的注意事项 1:一般pip会在安装python的Scripts文 ...