MySQL 基础 15 JDBC的批处理操作

1.1批处理

  之前进行JDBC的操作的时候,都是一条SQL语句执行。现在如果使用批处理,可以将一批SQL一起执行。

1.1.1 批处理基本使用

@Test
    /**
     * 批处理基本操作
     */
    public void demo1(){
        Connection conn = null;
        Statement stmt = null;
        try{
            // 获得连接:
            conn = JDBCUtils.getConnection();
            // 创建执行批处理对象:
            stmt = conn.createStatement();
            // 编写一批SQL语句:
            String sql1 = "create database test1";
            String sql2 = "use test1";
            String sql3 = "create table user(id int primary key auto_increment,name varchar(20))";
            String sql4 = "insert into user values (null,'aaa')";
            String sql5 = "insert into user values (null,'bbb')";
            String sql6 = "insert into user values (null,'ccc')";
            String sql7 = "update user set name = 'mmm' where id = 2";
            String sql8 = "delete from user where id = 1";
            // 添加到批处理
            stmt.addBatch(sql1);
            stmt.addBatch(sql2);
            stmt.addBatch(sql3);
            stmt.addBatch(sql4);
            stmt.addBatch(sql5);
            stmt.addBatch(sql6);
            stmt.addBatch(sql7);
            stmt.addBatch(sql8);
            // 执行批处理:
            stmt.executeBatch();
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtils.release(stmt, conn);
        }
    }

1.1.2批量插入(使用PreparedStatement)

@Test
    /**
     * 批量插入记录:
     * * 默认情况下MySQL批处理没有开启的,需要在url后面拼接一个参数即可。
     */
    public void demo2(){
        // 记录开始时间:
        long begin = System.currentTimeMillis();
        Connection conn = null;
        PreparedStatement pstmt = null;
        try{
            // 获得连接:
            conn = JDBCUtils.getConnection();
            // 编写SQL语句:
            String sql = "insert into user values (null,?)";
            // 预编译SQL:
            pstmt = conn.prepareStatement(sql);
            for(int i=1;i<=10000;i++){
                pstmt.setString(1, "name"+i);
                // 添加到批处理
                pstmt.addBatch();
                // 注意问题:
                // 执行批处理
                if(i % 1000 == 0){
                    // 执行批处理:
                    pstmt.executeBatch();
                    // 清空批处理:
                    pstmt.clearBatch();
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtils.release(pstmt, conn);
        }
        long end = System.currentTimeMillis();
        System.out.println((end-begin));
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 忽然发现,自己的准备都是没人知道的。以结果判断别人的我也是如此让人恼火啊。我该试着理解别人的这些言论,毕竟结果不可...
    白月明阅读 1,333评论 0 0
  • 一直以来,爱你都是件清晰的、明摆着的事实。却从来没有深问自己,爱你到底有多深 我希望在爱情里,我是理智的、小心经营...
    你叫我婆婆阅读 1,729评论 0 0
  • 此刻我是什么状态? 寝室的上床,还算小姑娘的窗帘,从外面看是这样的。 窗帘里,我自以为的一方天地。两件羽绒服,一堆...
    我想像一阵风阅读 2,047评论 0 1

友情链接更多精彩内容