Java之批處理的實現


批處理(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 {  2         Connection conn = JDBCUtils.getConnection();  3         PreparedStatement ps = null;  4 
 5         String sql = "insert into t_user values(null,?)";  6         ps = conn.prepareStatement(sql);  7         for (int i = 0; i < 10000; i++) {  8             ps.setString(1, "user" + i);  9             ps.addBatch();  //將sql語句保存起來,先不執行
10  } 11         long start = System.currentTimeMillis(); 12         ps.executeBatch();  //執行批處理中所有的sql語句
13         long end = System.currentTimeMillis(); 14         System.out.println("It costs" + (end - start) + "milliSeconds"); 15     }

 

  測試代碼:

1   @Test 2     public void testBatch() throws Exception { 3         Dao dao=new Dao(); 4  dao.insertUser(); 5     }

測試結果:

  使用批處理只需要200多毫秒,而不開啟批處理需要十幾分鍾,由此可見,使用批處理可以大大縮短sql語句執行時間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM