首页 > 代码库 > JAVA批处理操作
JAVA批处理操作
批处理,可以大幅度提升大量增、删、改的速度,就是对大数据操作有很大的效率提升。
与上篇文章中提到的“连接池”相似。其实就是先将多次操作(增删改)打包,然后再一次发送执行
主要用到两个方法:
? 打包:PreparedStatement.addBatch();
? 发送、执行:PreparedStatement.executeBatch();
下面看做同一件事,用批处理和不用批处理的效率对比,源码如下:
import java.sql.Connection;import java.sql.Date;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * @author-zhipeng * * 对比批处理与非批处理的差别(本例的循环所在位置) */public class BatchTest { /** * 对比“批处理”与“非批处理”的执行效率 */ public static void main(String[] args) throws SQLException { //非批处理,插入100条数据所花费的时间 long start = System.currentTimeMillis(); for (int i = 0; i < 100; i++) create(i); long end = System.currentTimeMillis(); System.out.println("create:" + (end - start)); //批处理,插入100条数据所花费的时间 start = System.currentTimeMillis(); createBatch(); end = System.currentTimeMillis(); System.out.println("createBatch:" + (end - start)); } /** * 非批处理-插入1条数据 */ static void create(int i) throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { //JdbcUtils为自定义的操作类,这里不多介绍 conn = JdbcUtils.getConnection(); String sql = "insert into user(name,birthday, money) values (?, ?, ?) "; ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); ps.setString(1, "no batch name" + i); ps.setDate(2, new Date(System.currentTimeMillis())); ps.setFloat(3, 100f + i); //执行插入 ps.executeUpdate(); } finally { //释放资源 JdbcUtils.free(rs, ps, conn); } } /** * 批处理-插入100条数据 */ static void createBatch() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); String sql = "insert into user(name,birthday, money) values (?, ?, ?) "; ps = conn.prepareStatement(sql); //注意批处理与“非批处理”循环放的位置 for (int i = 0; i < 100; i++) { ps.setString(1, "batch name" + i); ps.setDate(2, new Date(System.currentTimeMillis())); ps.setFloat(3, 100f + i); //关键方法1:打包 ps.addBatch(); } //关键方法2:执行 int[] is = ps.executeBatch(); } finally { JdbcUtils.free(rs, ps, conn); } }}
运行效果:
这是执行100条数据的差距,可以想象对大数据的效率提升改有多大。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。