批处理(batch)

一、批处理介绍

  1、 批处理指的是一次操作中执行多条SQL语句

  2、 批处理相比于一次一次执行效率会提高很多

  3、 批处理主要是分两步:
      1.将要执行的SQL语句保存
      2.执行SQL语句
  4、 Statement和PreparedStatement都支持批处理操作,这里我们只需要掌握PreparedStatement的批处理方式:
      1) 方法:

        void addBatch()

          - 将要执行的SQL先保存起来,先不执行

          - 这个方法在设置完所有的占位符之后调用

        int[] executeBatch()

          - 这个方法用来执行SQL语句,这个方法会将批处理中所有SQL语句执行

      2) mysql默认批处理是关闭的,所以我们还需要去打开mysql的批处理:

        ? rewriteBatchedStatements=true

          我们需要将以上的参数添加到mysql的url地址中

      3)  注意:低版本的mysql-jdbc驱动也不支持批处理

二、批处理的实现

  在连接数据库的url后面添加? rewriteBatchedStatements=true,开启批处理

 1   public void insertUser() throws SQLException {
Connection conn = JDBCUtils.getConnection();
PreparedStatement ps = null; String sql = "insert into t_user values(null,?)";
ps = conn.prepareStatement(sql);
for (int i = 0; i < 10000; i++) {
ps.setString(1, "user" + i);
ps.addBatch(); //将sql语句保存起来,先不执行
}
long start = System.currentTimeMillis();
ps.executeBatch(); //执行批处理中所有的sql语句
long end = System.currentTimeMillis();
System.out.println("It costs" + (end - start) + "milliSeconds");
}

  测试代码:

   @Test
public void testBatch() throws Exception {
Dao dao=new Dao();
dao.insertUser();
}

测试结果:

  使用批处理只需要200多毫秒,而不开启批处理需要十几分钟,由此可见,使用批处理可以大大缩短sql语句执行时间

Java之批处理的实现的更多相关文章

  1. Java执行批处理.bat文件(有问题???求高手帮忙解答!!!)

                           Java执行批处理.bat文件(有问题???求高手帮忙解答!!!) 在项目开发中常常都会遇到需要在代码中调用批处理bat脚本,把自己在项目中遇到过的总结下 ...

  2. Java JDBC批处理插入数据操作

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  3. Java JDBC批处理插入数据操作(转)

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  4. Java调用批处理或可执行文件

    import java.io.BufferedReader; import java.io.InputStreamReader; public class Test { public static v ...

  5. java .bat批处理(java cmd命令)

    参考:http://www.iitshare.com/under-the-cmd-compile-the-java.html 参考:http://zhidao.baidu.com/link?url=Y ...

  6. Java -- JDBC 批处理

    两种批处理方式: 采用Statement.addBatch(sql)方式实现批处理: •优点:可以向数据库发送多条不同的SQL语句. •缺点: •SQL语句没有预编译. •当向数据库发送多条语句相同, ...

  7. java必备基础知识点

    Java基础 1. 简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等 2. 简单写出 ...

  8. Java JDBC Batch

    Java批量处理数据 import java.sql.Connection; import java.sql.PreparedStatement; //import String sql = &quo ...

  9. java编程小记

    http://blog.csdn.net/pipisorry/article/details/51050189 很久没写java,什么都不会了,小记一下. 类型转换 字符串转int类型:Integer ...

随机推荐

  1. binlog之一:binary log初探

    MySQL Binary Log也就是常说的bin-log,是mysql执行改动产生的二进制日志文件,其主要作用有两个: Replication(主从数据库):在master端开启binary log ...

  2. mysql存储过程获取sqlstate message_text

    群里有人询问,在mysql的proc中如何获取错误信息.错误编号呢?我们知道在oracle.mssql中比较简单: oracle中sqlcode,sqlerrm ;mssql中ERROR_PROCED ...

  3. postgresql 模式与用户,及跨库访问

    1 控制台命令\h:查看SQL命令的解释,比如\h select.\?:查看psql命令列表.\l:列出所有数据库.\c [database_name]:连接其他数据库.\d:列出当前数据库的所有表格 ...

  4. navicat for mysql ,mysql版本是8.0的版本,连接数据库报错1251,解决办法。

    我的mysql版本是8.0的版本,因为毕竟新的mysql采用新的保密方式,所以就的似乎不能用,改密码方式: 用管理员身份打开cmd mysql -uroot -p(输入密码)            进 ...

  5. hadoop 常用端口 及模块介绍

    50070                 namenode http port 50075                 datanode   http  port 50090          ...

  6. 部署和调优 2.1 squid正向代理

    安装squid yum install -y squid Squid 官方网站为 http://www.squid-cache.org 打开注释掉的 cache_dir ufs / 缓存目录的位置,大 ...

  7. Android CTS(frome google)

    Compatibility Test Suite How does the CTS work? The Compatibility Test Suite (CTS) is a free, commer ...

  8. maven 本地jar包依赖生成

    转载自:http://www.cnblogs.com/wuyouwulv/p/maven_configure_oracle_jdbc.html 由于Oracle授权问题,Maven不提供Oracle ...

  9. php二维数组排序方法(array_multisort,usort)

    一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: $users = ...

  10. day17-jdbc 5.url介绍

    url用于标识数据库的位置,用于标识找哪个数据库. 总结:url是路径,其实就是确定是哪个数据库.用来确定我用的是哪一个数据库,并且通知我这个Connection或者是这个DriverManager获 ...