zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    献给初学者:谈谈如何学习Linux操作系统
    Spring MVC 教程,快速入门,深入分析
    缓存、缓存算法和缓存框架简介
    计算机科学中最重要的32个算法
    12岁的少年教你用Python做小游戏
    当你输入一个网址的时候,实际会发生什么?
    java程序员从笨鸟到菜鸟之(七)一—java数据库操作
    java中的类修饰符、成员变量修饰符、方法修饰符。
    Java内存分配全面浅析
    Java知多少(19)访问修饰符(访问控制符)
  • 原文地址:https://www.cnblogs.com/loaderman/p/10007803.html
Copyright © 2011-2022 走看看