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); } }
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!