java JDBC之批处理--Java笔记

java JDBC之批处理--Java笔记,第1张

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();

时间:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5708395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存