<十二>JDBC_批量处理

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_批量处理的更多相关文章
- ElasticSearch(十二)批量查询mget
1.批量查询的好处 就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减 ...
- SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework
1.调用前组装参数 2.调用发送信息服务脚本 .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...
- 第二十二章 跳出循环-shift参数左移-函数的使用 随堂笔记
第二十二章 跳出循环-shift参数左移-函数的使用 本节所讲内容: 22.1 跳出循环 22.2 Shift参数左移指令 22.3 函数的使用 22.4 实战-自动备份mysql数据库和nginx服 ...
- FreeSql (十二)更新数据时指定列
var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...
- FreeSql (十四)批量更新数据
FreeSql支持丰富的更新数据方法,支持单条或批量更新,在特定的数据库执行还可以返回更新后的记录值. var connstr = "Data Source=127.0.0.1;Port=3 ...
- FreeSql (二十二)Dto 映射查询
适合喜欢使用 dto 的朋友,很多时候 entity 与 dto 属性名相同,属性数据又不完全一致. 有的人先查回所有字段数据,再使用 AutoMapper 映射. 我们的功能是先映射,再只查询映射好 ...
- FreeSql (三十二)Aop
FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...
- 201871010109-胡欢欢《面向对象程序设计(java)》第十二周学习总结
201871010109-胡欢欢<面向对象程序设计(java)>第十二周学习总结 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...
- 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环
目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...
随机推荐
- 海量日志分析方案--logstash+kibnana+kafka
下图为唯品会在qcon上面公开的日志处理平台架构图.听后觉得有些意思,好像也可以很容易的copy一个,就动手尝试了一下. 目前只对flume===>kafka===>elacsticSea ...
- String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";作用!!!!!
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...
- Android安全攻防战,反编译与混淆技术完全解析(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值 ...
- LocalDB 静默安装
cmd命令:msiexec /i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES 注意:需要以管理员身份运行
- javaSE基础05
javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...
- REPL环境
一.Node的REPL基本操作 REPL(Read-eval-print-loop):交互式解析器 在REPL环境下,可以定义和运行变量.函数.对象. REPL的常用命令: 进入node,即进入了RE ...
- [转]utf8编码原理详解
from : http://blog.csdn.net/baixiaoshi/article/details/40786503 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态 ...
- Riemann映射定理
单复变函数几何理论最高的成就我想应该属于Riemann映射定理吧! Riemann映射定理:$\mathbb C$中任意边界多余一个点的单连通域$D$都与单位圆盘$B(0,1)$等价,即存在着$D$上 ...
- XML 特殊字符
XML转义字符 以下为XML标志符的数字和字符串转义符 " (" 或 ") ' (' 或 ') & (& 或 & ...
- 【Java EE 学习 73】【数据采集系统第五天】【参与调查】【导航处理】【答案回显】【保存答案】
一.参与调查的流程 单击导航栏上的“参与调查”按钮->EntrySurveyAction做出相应,找到所有的Survey对象并转发到显示所有survey对象的页面上供用户选择->用户单击其 ...