用mysql做批处理,插入一万条数据,配置了任然打不开批处理

打开批处理
public class Pdao {
/**
* pstmt对象内部有集合
* 1. 用循环疯狂向pstmt中添加sql参数,它自己有模板,使用一组参数与模板罚没可以匹配出一条sql语句
* 2. 调用它的执行批方法,完成向数据库发送!
* @throws SQLException
*/
@Test
public void fun5() throws SQLException {
Connection con = JdbcUtils.getConnection();
String sql = "INSERT INTO t_stu VALUES(?,?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sql);

    // 疯狂的添加参数
    for(int i = 0; i < 10000; i++) {
        pstmt.setInt(1, i+1);
        pstmt.setString(2, "stu_" + i);
        pstmt.setInt(3, i);
        pstmt.setString(4, i%2==0?"男":"女");

        pstmt.addBatch();//添加批!这一组参数就保存到集合中了。
    }
    long start = System.currentTimeMillis();
    pstmt.executeBatch();//执行批!
    long end = System.currentTimeMillis();

    System.out.println(end - start);//412764, 301
}

}

2个回答

是我的驱动包,版本太低了,我换了一个驱动包就好了

为连接加上事务,然后按批提交事务才可以,这样以非事务运行时不可以的,没有回滚空间和提交空间。

加事务很简单;
con.setAutoCommit(false);
然后在pstmt.executeBatch();后执行
con.commit();

如果有帮助,希望采纳

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问