栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java JDBC之批处理--Java笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java JDBC之批处理--Java笔记

目录

批处理

方法:

未使用批处理:

 使用批处理:


批处理

①.当需要成批执行 dml 语句时

②.JDBC 连接mysql 时,如果要使用批处理,需要在 url 中加参数

?rewriteBatchedStatements=true

③.批处理往往和 PreparedStatement 一起使用,可以减少编译次数和允许次数,可以提高效率

④.批处理创建了一个 ArrayList(object 类型的 element),按照1.5被扩容

方法:
1.addBatch()添加需要处理的 sql 语句
2.execyteBatch()执行批量处理语句
3.clearrBatch()清空批处理中的语句

未使用批处理:

        Class.forName("com.mysql.cj.jdbc.Driver");// 自动注册驱动

        String url = "jdbc:mysql:/aaa";
        Connection c = DriverManager.getConnection(url, "root", "666");
        String sql = ("insert into bb values(?)");
        PreparedStatement p = c.prepareStatement(sql);
        long l1 = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            p.setInt(1, i);
            p.executeUpdate();
        }
        long l2 = System.currentTimeMillis();
        System.out.println(l2 - l1);

        p.close();
        c.close();

输出:

 

 

 使用批处理:
        Class.forName("com.mysql.cj.jdbc.Driver");// 自动注册驱动

        String url = "jdbc:mysql:/aaa?rewriteBatchedStatements=true";
        Connection c = DriverManager.getConnection(url, "root", "666");
        String sql = ("insert into bb values(?)");
        PreparedStatement p = c.prepareStatement(sql);
        long l1 = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            p.setInt(1, i);
            p.addBatch();
            if ((i + 1) % 200 == 0) {
                p.executeBatch();
                p.clearBatch();
            }
        }
        long l2 = System.currentTimeMillis();
        System.out.println(l2 - l1);

        p.close();
        c.close();

时间:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709854.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号