• jdbc java数据库连接 10)批处理


    批处理

      很多时候,需要批量执行sql语句!

      需求:批量保存信息!  

      设计

        AdminDao

        Public  void  save(List<Admin list){    // 目前用这种方式

          // 循环

          // 保存  (批量保存)

          }

        Public  void  save(Admin  admin ){

          // 循环

          // 保存

          }

      技术

        |-- 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 }
  • 相关阅读:
    php 删除文件夹下的所有文件
    IBM AppScan 安全扫描:加密会话(SSL)Cookie 中缺少 Secure 属性 处理办法
    Tomcat/weblogic session失效时间的几种设置方法
    truncate与delete的区别
    oninput,onpropertychange,onchange的用法和区别
    HttpSessionBindingListener和HttpSessionAttributeListener区别
    insert table 和create table as 区别
    慎用create table as select,一定要注意默认值的问题
    mysql in与or效率比较
    值域范围
  • 原文地址:https://www.cnblogs.com/LZL-student/p/6021201.html
Copyright © 2020-2023  润新知