超简单使用批处理(batch)操作数据库
超简单使用批处理(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)操作数据库的更多相关文章
- 超简单jQuary链式操作代码实现手风琴效果
超简单jQuery代码实现手风琴效果 HTML代码 <div id="cont"> <div> <p>人生若只如初见</p> < ...
- python学习 —— python3简单使用pymysql包操作数据库
python3只支持pymysql(cpython >= 2.6 or >= 3.3,mysql >= 4.1),python2支持mysqldb. 两个例子: import pym ...
- mysql主从复制(超简单)
mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql ...
- js操作数据库实现注册和登陆
自从node-js出现之后,不只是java,php等后端语言可以操作数据库,进行内容的增删改查,javascript简本语言同样具备了该项技能,而且在node下,js具备了很强的操作性和代码的阅读性, ...
- JDBC操作数据库的学习(1)
单单对数据库的操作,比如说MySQL,我们可以在命令行窗口中执行,但是一般是应用程序要操作数据库,因此我们应该在程序中的代码上体现对数据库的操作,那么使用程序应用如何操作数据库呢?那就要使用到数据库的 ...
- JDBC操作数据库之批处理
JDBC开发中,操作数据库需要和数据库建立连接,然后将要执行的SQL语句发送到数据库服务器,最后关闭数据库连接,都是按照这样的操做的,如果按照此流程要执行多条SQL语句,那么就要建立多个数据库连接,将 ...
- JDBC操作数据库的批处理
在JDBC开发中,操作数据库需要与数据库建立连接,然后将要执行的SQL语句传送到数据库服务器,最后关闭数据库连接,都是按照这样一个流程进行操作的.如果按照该流程执行多条SQL语句,那么就需要建立多个数 ...
- Java_Web使用简单的批处理操作
之前进行Web开发的时候使用的是myeclipse,但只用过的人都知道,由于其插件太多,而且有很多插件的功能根本就接触不到.所以导致一旦工程稍微大一点就会很卡,虽然之前也对其进行优化过,但还是觉得不太 ...
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 1
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703679.html ------------------------------------ ...
随机推荐
- JDBC&&c3p0、事务、批处理、多线程 于一体的经典秘方QueryRunner
目录: 基础篇_功能各自回顾 JDBC基础代码回顾(使用JdbcUtils工具简化) c3p0数据库连接池的使用(使用JdbcUtils工具简化) 大数据的插入(使用c3p0+JdbcUtils工具简 ...
- 学习笔记TF028:实现简单卷积网络
载入MNIST数据集.创建默认Interactive Session. 初始化函数,权重制造随机噪声打破完全对称.截断正态分布噪声,标准差设0.1.ReLU,偏置加小正值(0.1),避免死亡节点(de ...
- Maven在导入其他项目时报错:Plugin execution not covered by lifecycle configuration
这几天想把Spring 攻略第二版完整的学习下,所以就在网上下载了该教材的源码,寻思边看书边练习!之前有过一些Maven开发的相关经验,觉得Maven在引入jar包上的配置还是很方便的,所以这次源码的 ...
- (转)JAVA反射机制理解
JAVA反射机制: 通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们. 理论的东东太多也没 ...
- (转)生产者/消费者问题的多种Java实现方式 (待整理)
实质上,很多后台服务程序并发控制的基本原理都可以归纳为生产者/消费者模式,而这是恰恰是在本科操作系统课堂上老师反复讲解,而我们却视而不见不以为然的.在博文<一种面向作业流(工作流)的轻量级可复用 ...
- 【canvas学习笔记二】绘制图形
上一篇我们已经讲述了canvas的基本用法,学会了构建canvas环境.现在我们就来学习绘制一些基本图形. 坐标 canvas的坐标原点在左上角,从左到右X轴坐标增加,从上到下Y轴坐标增加.坐标的一个 ...
- 【分享】01. Eclipse for PHP + phpStudy 搭建php开发环境
配置php编译器 配置phpStudy服务器项目发布目录 修改hosts文件127.0.0.1 www.350zx.cn 新建项目 启动的你的phpStudy
- 消息队列中间件 RocketMQ 源码分析 —— Message 存储
- 贡献你的代码,将jar包发布到Maven中央仓库以及常见错误的解决办法
前几天将自己的日志工具发布到了Maven中央仓库中.这个工具本省没有多少技术含量,因为是修改别人的源代码实现的,但是将jar发布到Maven仓库却收获颇丰,因为网上有些教程过时了,在此分享下自己发布j ...
- 找不到包含 OwinStartupAttribute 的程序集。 - 找不到包含 Startup 或 [AssemblyName].Startup 类的程序集。
打开web.config添加 <add key="owin:appStartup" value="false" /> <add key=&qu ...