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);
    }
}
原文地址:https://www.cnblogs.com/loaderman/p/10007803.html