• JDBC批处理


    批处理相关方法

    void addBatch(String sql)     添加批处理

     void clearBatch()            清空批处理

    int[] executeBatch()         执行批处理


    实现:

             Admin.java         实体类封装数据

             AdminDao.java      封装所有的与数据库的操作

             App.java           测试


    package com.loaderman.demo.b_batch;
    
    
    public class Admin {
    
        private String userName;
        private String pwd;
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
        
    }
    package com.loaderman.demo.b_batch;
    
    import java.sql.Connection;
    import com.loaderman.demo.utils.JdbcUtil;
    
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.List;
    
    
    // 封装所有的与数据库的操作
    public class AdminDao {
    
        // 全局参数
        private Connection con;
        private PreparedStatement pstmt;
        private ResultSet rs;
    
        // 批量保存管理员
        public void save(List<Admin> list) {
            // SQL
            String sql = "INSERT INTO admin(userName,pwd) values(?,?)";
    
            try {
    
                // 获取连接
                con = JdbcUtil.getConnection();
                // 创建stmt
                pstmt = con.prepareStatement(sql);           // 【预编译SQL语句】
    
                for (int i=0; i<list.size(); i++) {
                    Admin admin = list.get(i);
                    // 设置参数
                    pstmt.setString(1, admin.getUserName());
                    pstmt.setString(2, admin.getPwd());
    
                    // 添加批处理
                    pstmt.addBatch();                        // 【不需要传入SQL】
    
                    // 测试:每5条执行一次批处理
                    if (i % 5 == 0) {
                        // 批量执行
                        pstmt.executeBatch();
                        // 清空批处理
                        pstmt.clearBatch();
                    }
    
                }
    
                // 批量执行
                pstmt.executeBatch();
                // 清空批处理
                pstmt.clearBatch();
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JdbcUtil.closeAll(con, pstmt, rs);
            }
        }
    }
    package com.loaderman.demo.b_batch;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.junit.Test;
    
    public class App {
    
    
        @Test
        public void testBatch() throws Exception {
            
        
            List<Admin> list = new ArrayList<Admin>();
            for (int i=1; i<21; i++) {
                Admin admin = new Admin();
                admin.setUserName("Jack" + i);
                admin.setPwd("888" + i);
                list.add(admin);
            }
           
            AdminDao dao = new AdminDao();
            dao.save(list);
        }
    }
  • 相关阅读:
    2017 湖南省赛 K Football Training Camp
    一些相似单词的区别之处
    LeetCode301. Remove Invalid Parentheses
    算法刷题细节点总结
    LeetCode765. Couples Holding Hands
    LeetCode741. Cherry Pickup
    LeetCode312. Burst Balloons
    LeetCode679. 24 Game
    LeetCode862. Shortest Subarray with Sum at Least K
    LeetCode818. Race Car
  • 原文地址:https://www.cnblogs.com/loaderman/p/10007803.html
Copyright © 2020-2023  润新知