超简单使用批处理(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 ------------------------------------ ...
随机推荐
- Let's Encrypt与DNS轮循
本文由网络安全研究员.securityheaders.io和report-uri.io创始人Scott Helme发布在其个人博客中.描述了如何使用Let's Encrypt的同时兼容DNS轮循. 早 ...
- (转)CentOS 7.0关闭默认防火墙启用iptables防火墙
场景:在本地虚拟机上使用ftp软件需要进行相应的端口设置,不可避免要访问Cnetos的防火墙,默认firewall操作不方便,所以需要进行相应的替换. 1 配置防火墙,开启80端口.3306端口 1. ...
- python注释中文
原因: 如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明. 解决办法: 必须是在第一行或是第二行加入 1)加上# -*- coding:utf-8 -*-之后就能成功使用中文注释了 2) ...
- EasyUi+Spring Data 实现按条件分页查询
Spring data 介绍 Spring data 出现目的 为了简化.统一 持久层 各种实现技术 API ,所以 spring data 提供一套标准 API 和 不同持久层整合技术实现 . 自己 ...
- [Android FrameWork 6.0源码学习] View的重绘过程之Layout
View绘制的三部曲,测量,布局,绘画现在我们分析布局部分测量部分在上篇文章中已经分析过了.不了解的可以去我的博客里找一下 View的布局和测量一样,都是从ViewRootImpl中发起,ViewRo ...
- iOS源码博文集锦1
iOS精选源码 iOS一种弹出视图效果带动画 导航栏显示渐变色,类似qq一样 一分钟找到重力方向 简单高度自定义的日历.可根据项目的需求灵活修改布局 类似于UITableView且极简的图片浏览器 小 ...
- [NOIP 2011]聪明的质监员
聪明的质监员 题目 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n个矿石,从 1 到n逐一编号,每个矿石都有自己的重量wi以及价值vi.检验矿产的流程是: 1. 给定 m个区间[ ...
- js获取url,截取url参数,截取url后文件名
获取当前: var url = window.location.href; 百度为例: var url=window.location.href; console.info(url); http:// ...
- theOS环境搭建
http://joeyio.com/ios/2014/01/01/make-a-mobile-substrate-tweak-using-theos/~/Doucment>: cd mytwea ...
- 命令控制台与java环境配置
1. 命令控制台 1) Linux / Unix 命令格式 command [-选项...] [参数...] 如: ls -a ~ mkdir .demo //创建隐藏目录 ...