超简单使用批处理(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 ------------------------------------ ...
随机推荐
- Work 3(工作类) (2017.07.01)
- maven依赖jar包更新,业务jar需同步更新(业务jar依赖API)
背景: 环境出现问题,定位为依赖jar缺失,修改工程pom文件补充依赖jar. 更新要点说明: 依赖jar,更新提交 业务jar,也需更新提交:maven构建会把依赖jar引用进去,更新环境如果单独更 ...
- QBC查询、离线条件查询(DetachedCriteric)和分页查询模版
一.QBC检索步骤 QBC检索步骤: 1.调用Session的createCriteria()方法创建一个Criteria对象. 2.设定查询条件.Expression类提供了一系列用于设定查询条件的 ...
- 使用JavaScript开发跨平台的桌面应用
任何可以使用JavaScript来编写的应用,最终会由JavaScript编写.--Atwood定律 Atwood's Law是Jeff Atwood在2007年提出的:"any appli ...
- (转)Linux服务器安装配置tomcat
这里首先说明下,Linux下的Tomcat没有32位和64位的区分. tomcat是分windows版本与linux版本的,windows版本一般以exe或者zip格式:linux版本一般以tar.g ...
- 【D3】D3词汇表
按字母顺序 axis:数轴或坐标轴表示两个维度上数据尺度的直线 bar chart:条形图 (参见Excel)以矩形宽度反映数值大小的图表形式 bar:条形以宽度反映数值大小的矩形(rect) bin ...
- 【逻辑漏洞】基于BurpSuite的越权测试实战教程
一.什么是越权漏洞?它是如何产生的? 越权漏洞是Web应用程序中一种常见的安全漏洞.它的威胁在于一个账户即可控制全站用户数据.当然这些数据仅限于存在漏洞功能对应的数据.越权漏洞的成因主要是因为开发人员 ...
- rabbitmq重装之后无法加入原有cluster的bug解析
背景: 一台controller node,一台compute1节点 两台机器的host文件均已经进行hostname解析 两节点本已经加入了同一rabbitmq cluster 但controlle ...
- Java大数据人才应用领域广,就业薪酬高
互联网创造了大数据应用的规模化环境,大数据应用成功的案例大都是在互联网上发生的, 互联网业务提供了数据,互联网企业开发了处理软件,互联网企业的创新带来了大数据应用 的活跃,没有互联网便没有今天的大数据 ...
- 35. leetcode 501. Find Mode in Binary Search Tree
501. Find Mode in Binary Search Tree Given a binary search tree (BST) with duplicates, find all the ...