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)--- 批处理的更多相关文章

  1. Jdbc入门

    JDBC入门 l  导jar包:驱动! l  加载驱动类:Class.forName(“类名”); l  给出url.username.password,其中url背下来! l  使用DriverMa ...

  2. day17(JDBC入门&jdbcUtils工具介绍)

    day17 JDBC整体思维导图 JDBC入门 导jar包:驱动! 加载驱动类:Class.forName("类名"); 给出url.username.password,其中url ...

  3. Java jdbc入门

    1 jdbc入门 1.1 之前操作数据 1)通过mysql的客户端工具,登录数据库服务器  (mysql -u root -p 密码) 2)编写sql语句 3)发送sql语句到数据库服务器执行 1.2 ...

  4. JAVA企业级开发-jdbc入门(09)

    一. jdbc介绍 JDBC全称为:Java DataBase Connectivity(java数据库连接). SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JD ...

  5. 1 初识数据库操作 2 JDBC 入门

    1 JDBC:Java Database Connectivity(Java 数据库连接) 1.1 JDBC 入门程序 注册驱动:Class.forName("com.mysql.cj.jd ...

  6. 【JDBC】JDBC入门

    JDBC的入门 搭建开发环境 编写程序,在程序中加载数据库驱动 建立连接 创建用于向数据库发送SQL的Statement对象 从代表结果集的ResultSet中取出数据 断开与数据库的连接,并释放相关 ...

  7. JDBC入门学习

    Introduction What's JDBC JDBC stands for Java Database Connectivity, which is a standard Java API fo ...

  8. jdbc基础 (四) 批处理

    批处理,就是字面上的意思,一次性处理一批sql语句. 直接看例子吧: package com.cream.ice.jdbc; import java.sql.Connection; import ja ...

  9. java中使用JDBC的preparedStatement批处理数据的添加

    在项目中我们偶尔可能会遇到批量向数据库中导入数据,如果批处理的情况较多的情况下可以使用spring batch,如果只是一个导入功能的话可以考虑使用jdbc的preparedStatement处理. ...

随机推荐

  1. elasticsearch-analysis-pinyin

    来源:https://github.com/medcl/elasticsearch-analysis-pinyin Pinyin Analysis for Elasticsearch This Pin ...

  2. [ActionScript 3.0] File下载工具

    更新数据原理,访问接口,将服务器数据抓取并下载到本地的临时文件夹,当所有下载完成,卸载客户端内容,出现升级界面,此时移动下载的内容到目标文件夹,移动完成再重新加载客户端,访问接口,下载文件,移动文件均 ...

  3. placeholder插件详解

    placeholder插件是用来实现input或者textarea文本框显示默认文字的功能,当获得焦点时,默认文字消失.用户按删除键,把输入的字符删除掉,并失去焦点时,默认文字又出现等功能.使用此插件 ...

  4. python自学之第一章 —— 变量

    1.变量的命名(): (1).可以包含数字.字母.下划线‘_’,但只能以字母和下划线‘_’开头,不能以数字开头! (2).变量的命名不能包含空格. (3).不能将python中的关键字(reserve ...

  5. iOS学习笔记(8)——GCD初探

    1. AppDelegate.m #import "AppDelegate.h" #import "ViewController.h" @interface A ...

  6. Python之机器学习K-means算法实现

    一.前言: 今天在宿舍弄了一个下午的代码,总算还好,把这个东西算是熟悉了,还不算是力竭,只算是知道了怎么回事.今天就给大家分享一下我的代码.代码可以运行,运行的Python环境是Python3.6以上 ...

  7. iOS9下UICollectionViewCell的awakeFromNib问题

    最近项目测试出一个隐藏已久的bug,经过多番测试,发现在iOS9下自定义的一个UICollectionViewCell只走一次awakeFromNib. 具体情况是,项目中有一个控制器用到了自定义的U ...

  8. css左右布局,左侧固定,右侧自适应

    实现布局的几种方法,见代码: <!DOCTYPE html> <html lang="cn"> <head> <meta charset= ...

  9. docker 暴露2375 端口。

    网上找的.大多不能用...一下是我自己找了半天的方法...,可能是版本太旧的原因 下图解决方法: ubuntu: 18.04 docker: Docker version 18.09.2, build ...

  10. PHPStudy环境下搭建composer

    第一种方法(亲测有效) 1. 找到composer的安装目录:D:\phpstudy\PHPTutorial\tools\composer 2.把目录下的 composer.bat 和 compose ...