JDBC入门(4)--- 批处理
1、Statement批处理
当你有10条SQL语句要执行时,一次向服务器发送一条SQL语句,这样做的效率上极差,处理的方案是使用批处理,即一次向服务发送多条SQL语句,然后由服务器一次性处理。
批处理只针对更新(增删改)语句,批处理与查询无关。
可以多次调用Statement类的addBatch(String sql)方法,把需要执行的所有SQL语句添加到一个“批”中,然后调用Statement类的excuteBatch()方法来执行当前“批中的语句”。
- void addBatch(String sql):添加一条语句到“批”中。
- int[] excuteBatch():执行“批”中所有的语句,返回值表示每条语句所影响的行数据;
- void clearBatch():清空“批”中的所有语句
2、PreparedStatement批处理
PreparedStatement的批处理有所不同,因为每个PreparedStatement对象都绑定一条SQL模板。所以向PreparedStatement中添加的不是SQL语句,而是给“?”赋值。
1 public class Demo5 {
2 /*
3 * pstmt对象内部有集合
4 * 1、用循环疯狂向pstmt中添加sql参数,它自己有模板,
5 * 使用一组参数与模板就可以匹配一条sql语句
6 * 2、调用它的执行批方法,完成向数据库发送。
7 * */
8 @Test
9 public void fun1() throws Exception {
10 /*
11 * pstmt
12 * */
13 Connection con = JdbcUtils.getConnection();
14 String sql = "INSERT INTO t_user VALUES (?,?)";
15 PreparedStatement pstmt = con.prepareStatement(sql);
16 for (int i = 0; i < 10000; i++) {
17 pstmt.setInt(1,i+1);
18 pstmt.setInt(2,i);
19 pstmt.addBatch();//添加批,这一组参数就保存到集合中;
20 }
21 long start = System.currentTimeMillis();
22 pstmt.executeBatch();//执行批处理;
23 long end = System.currentTimeMillis();
24 System.out.println(end-start);
25 }
26 }
打开批处理
MySQL的批处理也需要通过参数来打开:rewriteBatchedStatements=true,如
url = jdbc:mysql://localhost:3306/mydb1?rewriteBatchedStatements=true
效果:
- 批处理开启前耗时:140794ms
- 批处理开启后耗时:174ms
JDBC入门(4)--- 批处理的更多相关文章
- Jdbc入门
JDBC入门 l 导jar包:驱动! l 加载驱动类:Class.forName(“类名”); l 给出url.username.password,其中url背下来! l 使用DriverMa ...
- day17(JDBC入门&jdbcUtils工具介绍)
day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url ...
- Java jdbc入门
1 jdbc入门 1.1 之前操作数据 1)通过mysql的客户端工具,登录数据库服务器 (mysql -u root -p 密码) 2)编写sql语句 3)发送sql语句到数据库服务器执行 1.2 ...
- JAVA企业级开发-jdbc入门(09)
一. jdbc介绍 JDBC全称为:Java DataBase Connectivity(java数据库连接). SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JD ...
- 1 初识数据库操作 2 JDBC 入门
1 JDBC:Java Database Connectivity(Java 数据库连接) 1.1 JDBC 入门程序 注册驱动:Class.forName("com.mysql.cj.jd ...
- 【JDBC】JDBC入门
JDBC的入门 搭建开发环境 编写程序,在程序中加载数据库驱动 建立连接 创建用于向数据库发送SQL的Statement对象 从代表结果集的ResultSet中取出数据 断开与数据库的连接,并释放相关 ...
- JDBC入门学习
Introduction What's JDBC JDBC stands for Java Database Connectivity, which is a standard Java API fo ...
- jdbc基础 (四) 批处理
批处理,就是字面上的意思,一次性处理一批sql语句. 直接看例子吧: package com.cream.ice.jdbc; import java.sql.Connection; import ja ...
- java中使用JDBC的preparedStatement批处理数据的添加
在项目中我们偶尔可能会遇到批量向数据库中导入数据,如果批处理的情况较多的情况下可以使用spring batch,如果只是一个导入功能的话可以考虑使用jdbc的preparedStatement处理. ...
随机推荐
- [转] LVM分区在线扩容
[转] LVM分区在线扩容 在线扩容的这台服务器,LV分区格式为xfs,原大小1.2TB.增加了一块硬盘,大小为1.8TB. fdisk /dev/cciss/c0d1 # 创建分区,并指定分区类型为 ...
- python基础之循环
一.while循环 如果条件成立(true),重复执行相同操作,条件不符合,跳出循环 while 循环条件: 循环操作 (1)while循环示例 例:输入王晓明5门课程的考试成绩,计算平均成绩 i ...
- Linux之解决命令行cat命令中文乱码
临时解决cat中文乱码 cat test.txt | iconv -f GBK -t UTF-8
- docker微服务部署之:三,搭建Zuul微服务项目
docker微服务部署之:二.搭建文章微服务项目 一.新增demo_eureka模块,并编写代码 右键demo_parent->new->Module->Maven,选择Module ...
- AssertJ断言系列<一>
1 - Get AssertJ Core assertions Maven的pom.xml加入如下配置: <dependency> <groupId>org.assertj&l ...
- 使用Vue写一个登陆页面并在管理页面查看和修改
注册页面代码如下html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- [转] Akka 使用系列之二: 测试
[From] http://www.algorithmdog.com/akka-test 通过上一篇文章,我们已经大致了解怎么使用 Akka,期待细致用法.这篇文章将介绍如何用 Akka-testki ...
- 【GIS新探索】GeoHash原理和编解码实现
1.什么是GeoHash geohash基本原理是将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码.不好理解,没关系,我来找个图. 就像上面这张图,一个坐 ...
- Zynq-7000 FreeRTOS(二)中断:PL中断请求
总结Zynq-7000的PL发送给PS一个中断请求,为FreeRTOS中断做准备. UG585的P225显示了系统的中断框图,如下图所示. 图:ZYNQ器件的中断框图 UG585的P227画出来中断控 ...
- 【gcc】命令记录
编译程序gcc -o <eecutable> <soure_code.c>