import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.Test;
import com.kk.jdbc.JDBCTools;

public class JDBCTest {

/*
  * 向表中插入多条记录
  */
 @Test
 public void testBatchWithStatement() {

Connection con = null;
  PreparedStatement ps = null;
  String sql = null;

try {

con = JDBCTools.getConnection();
   JDBCTools.beginTx(con);

sql = "insert into users values (?,?,?,?)";

ps = con.prepareStatement(sql);

long begin = System.currentTimeMillis();

for (int i = 0; i < 1000; i++) {
    ps.setInt(1, i + 1);
    ps.setString(2, "name_" + i);
    ps.setString(3, "pass_" + i);
    ps.setInt(4, i++);
    ps.executeUpdate();
   }
   long end = System.currentTimeMillis();
   System.out.println("Time:" + (end - begin));
   JDBCTools.commit(con);

} catch (Exception e) {
   JDBCTools.rollback(con);
  } finally {
   JDBCTools.release(null, ps, con);
  }
 }

@Test
 public void testBatch() {

Connection con = null;
  PreparedStatement ps = null;
  String sql = null;

try {

con = JDBCTools.getConnection();
   JDBCTools.beginTx(con);

sql = "insert into users values (?,?,?,?)";

ps = con.prepareStatement(sql);

long begin = System.currentTimeMillis();

for (int i = 0; i < 1000; i++) {
    ps.setInt(1, i + 1);
    ps.setString(2, "name_" + i);
    ps.setString(3, "pass_" + i);
    ps.setInt(4, i++);
    
    //积攒SQL,当积攒到30就统一执行一次,并清空
    ps.addBatch();
    
    if ((i+1)%30==0) {
     ps.executeBatch();
     ps.clearBatch();
    }
   }
   
   //若总条数不是批量数的整条数,则还需要再额外执行一次
   if (1000%300!=0) {
    ps.executeBatch();
    ps.clearBatch();
   }
   
   long end = System.currentTimeMillis();
   System.out.println("Time:" + (end - begin));
   JDBCTools.commit(con);

} catch (Exception e) {
   JDBCTools.rollback(con);
  } finally {
   JDBCTools.release(null, ps, con);
  }
 }
}

<十二>JDBC_批量处理的更多相关文章

  1. ElasticSearch(十二)批量查询mget

    1.批量查询的好处 就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减 ...

  2. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework

    1.调用前组装参数 2.调用发送信息服务脚本   .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...

  3. 第二十二章 跳出循环-shift参数左移-函数的使用 随堂笔记

    第二十二章 跳出循环-shift参数左移-函数的使用 本节所讲内容: 22.1 跳出循环 22.2 Shift参数左移指令 22.3 函数的使用 22.4 实战-自动备份mysql数据库和nginx服 ...

  4. FreeSql (十二)更新数据时指定列

    var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...

  5. FreeSql (十四)批量更新数据

    FreeSql支持丰富的更新数据方法,支持单条或批量更新,在特定的数据库执行还可以返回更新后的记录值. var connstr = "Data Source=127.0.0.1;Port=3 ...

  6. FreeSql (二十二)Dto 映射查询

    适合喜欢使用 dto 的朋友,很多时候 entity 与 dto 属性名相同,属性数据又不完全一致. 有的人先查回所有字段数据,再使用 AutoMapper 映射. 我们的功能是先映射,再只查询映射好 ...

  7. FreeSql (三十二)Aop

    FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...

  8. 201871010109-胡欢欢《面向对象程序设计(java)》第十二周学习总结

    201871010109-胡欢欢<面向对象程序设计(java)>第十二周学习总结   内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...

  9. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环

    目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...

随机推荐

  1. PEAR安装

    看到PEAR章节,提到安装PEAR需要go-pear.bat,我机器上的PHP(v7.0.8)目录下,并没有go-pear.bat这个文件,网上查了一遍,怎么说的都有,最后还是在官网上找到解决方案. ...

  2. Java 知识结构图

    不可不懂的.NET基础知识 - 谷海燕 - 博客频道 - CSDN.NEThttp://blog.csdn.net/zhuanzhe117/article/details/8954924 出处:深入理 ...

  3. 解决绝对定位div position: absolute 后面的<a> Link不能点击

    今天布局的时候,遇到一个bug,当DIV设置为绝对定位时,这个div后面的相对定位的层里面的<a>Link标签无法点击. 网上的解决方案是在绝对定位层里面添加:pointer-events ...

  4. ubuntu下命令杂项

    一. 1.用sudo apt-get install python3-numpy之后,会默认把numpy安装到  /usr/lib/python3/dist-packages目录下,而且版本比较低. ...

  5. CSS 布局

    近日开发中,总感觉页面布局方面力不从心.以前也曾学过这方面的内容,但是不够系统,因此我打算整理一下. 在web 页面中一般有 table 和 css+div 两种布局方式. 其中css+div 又分为 ...

  6. 【DWR系列02】-DWR逆向Ajax即服务器推送

    .literal { background-color: #f2f2f2; border: 1px solid #cccccc; padding: 1px 3px 0; white-space: no ...

  7. 【leetcode】LRU Cache

    题目简述: Design and implement a data structure for Least Recently Used (LRU) cache. It should support t ...

  8. 【转】Android 底层开发的几点

    我干了3年Android sdk开发,觉得到了瓶劲没法更进一步,于是花了一年多点时间,大概摸到点门径.根据前辈的经验,Android底层完全入门需要两年. 先说下我的入门过程:第零步,下载源码,我下的 ...

  9. 用WinForm写的员工考勤项目!!!!!!

    先说几句,作为一个还在学习的程序员,掌握的知识有限:但我利用自身所学,给一些像我一样还在学习的码农提供我的绵薄之力! 写的不好,但是尽力了,希望大牛指点.多多吐槽!!! 好了开始说项目需求: 实现新增 ...

  10. Swift 圆角设置

    故事面板中设置圆角(storyboard) Key Path layer.borderWidth(边框宽度) layer.cornerRadius(圆角弧度) layer.borderColor(边框 ...