package com.rlovep.batch; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.rlovep.jdbc.JdbcUtil; /**创建表的sql语句: * create table if not exists admin( sid int primary key auto_increment, username varchar(10) not null, pwd varchar(6) default '123456' ); */ /** * @ClassName: AdminDao * @Description: 批处理sql语句 * @author peace w_peace@163.com * @date 9 Nov 2015 4:59:27 pm * */ public class AdminDao { //定义成员变量 private Connection connection; private PreparedStatement statement; //批量执行sql语句:使用batch:传入参数为list public void save(List<Admin>list){ //使用预编译操作 String sql="insert into admin(username,pwd) values(?,?)"; try { connection = JdbcUtil.getConnection(); statement=connection.prepareStatement(sql); int i=0; //遍历链表 for(Admin a:list){ //设置位置参数 statement.setString(1, a.getUserName()); statement.setString(2, a.getPwd()); //添加批处理 statement.addBatch(); //每六次执行一次批处理 if(i++==5) { i=0; //执行批处理:获得的数组为每次执行的操作影像的行数,按添加顺序获得 int count[]= statement.executeBatch(); //清楚这次执行完的批处理 statement.clearBatch(); //打印出总共执行了多少条 System.out.println("总共执行了这么多行"+count.length); } } //每超过六次的执行 int count[]=statement.executeBatch(); System.out.println("总共执行了这么多行"+count.length); } catch (SQLException e) { e.printStackTrace(); }finally { JdbcUtil.close(connection, statement); } } //进行测试 @Test public void testBatch() { List<Admin> list=new ArrayList<>(); for(int i=0;i<10;i++){ Admin admin=new Admin(); admin.setUserName("peace"+i); admin.setPwd("1234"+i); list.add(admin); } this.save(list); } }