jdbc java數據庫鏈接 10)批處理

批處理

  不少時候,須要批量執行sql語句!java

  需求:批量保存信息!  sql

  設計數據庫

    AdminDao測試

    Public  void  save(List<Admin list){    // 目前用這種方式spa

      // 循環設計

      // 保存  (批量保存)code

      }blog

 

    Public  void  save(Admin  admin ){get

      // 循環io

      // 保存

      }

  技術

    |-- Statement

      批處理相關方法

    1. void addBatch(String sql)     添加批處理
    2. void clearBatch()            清空批處理
    3. int[] executeBatch()         執行批處理

 

 

 

  實現

  1. Admin.java         實體類封裝數據
  2. AdminDao.java      封裝全部的與數據庫相關的操做
  3. App.java           測試

 

代碼:

    1:實體類封裝數據

 

1 public class Admin {
2 
3     private String userName;
4     private String pwd;
5 }

 

    2:測試批處理操做

 

 1 public class App {
 2     // 測試批處理操做
 3     @Test
 4     public void testBatch() throws Exception {
 5         
 6         // 模擬數據
 7         List<Admin> list = new ArrayList<Admin>();
 8         for (int i=1; i<21; i++) {
 9             Admin admin = new Admin();
10             admin.setUserName("Jack" + i);
11             admin.setPwd("888" + i);
12             list.add(admin);
13         }
14         
15         // 保存
16         AdminDao dao = new AdminDao();
17         dao.save(list);
18     }
19 }

 

    3:封裝全部的與數據庫的操做

 1 public class AdminDao {
 2     
 3     // 全局參數
 4     private Connection con;
 5     private PreparedStatement pstmt;
 6     private ResultSet rs;
 7 
 8     // 批量保存管理員
 9     public void save(List<Admin> list) {
10         // SQL
11         String sql = "INSERT INTO admin(userName,pwd) values(?,?)";
12         
13         try {
14             
15             // 獲取鏈接
16             con = JdbcUtil.getConnection();
17             // 建立stmt 
18             pstmt = con.prepareStatement(sql);           // 【預編譯SQL語句】
19             
20             for (int i=0; i<list.size(); i++) {
21                 Admin admin = list.get(i);
22                 // 設置參數
23                 pstmt.setString(1, admin.getUserName());
24                 pstmt.setString(2, admin.getPwd());
25                 
26                 // 添加批處理
27                 pstmt.addBatch();                        // 【不須要傳入SQL】
28                 
29                 // 測試:每5條執行一次批處理
30                 if (i % 5 == 0) {
31                     // 批量執行 
32                     pstmt.executeBatch();
33                     // 清空批處理
34                     pstmt.clearBatch();
35                 }
36                 
37             }
38             
39             // 批量執行 
40             pstmt.executeBatch();
41             // 清空批處理
42             pstmt.clearBatch();
43             
44         } catch (Exception e) {
45             e.printStackTrace();
46         } finally {
47             JdbcUtil.closeAll(con, pstmt, rs);
48         }
49     }
50 }
相關文章
相關標籤/搜索