PreparedStatement批量(batch)插入数据

Posted kuillldan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PreparedStatement批量(batch)插入数据相关的知识,希望对你有一定的参考价值。

JDBC操作数据库的时候,需要一次性插入大量的数据的时候,如果每次只执行一条SQL语句,效率可能会比较低。这时可以使用batch操作,每次批量执行SQL语句,调高效率。

public Boolean doCreateBatch(List<Emp> values) throws Exception
{
    try
    {
        String sql = " INSERT INTO emp(empno,ename,job,hiredate,sal,comm) VALUES "
                + " (?,?,?,?,?,?) ";
        this.conn.setAutoCommit(false);
        PreparedStatement stmt =  this.conn.prepareStatement(sql);
        for(Emp emp : values)
        {
            stmt.setInt(1, emp.getEmpno());
            stmt.setString(2, emp.getEname());
            stmt.setString(3, emp.getJob());
            stmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));
            stmt.setDouble(5, emp.getSal());
            stmt.setDouble(6, emp.getComm());
            stmt.addBatch();
        }
        System.out.println("before executing batch...");
        stmt.executeBatch();
        this.conn.commit();
        System.out.println("after batch executed!");
        this.conn.setAutoCommit(true);
        
        return true;
    }
    catch(Exception e)
    {
        throw e; 
    }
}

 

以上是关于PreparedStatement批量(batch)插入数据的主要内容,如果未能解决你的问题,请参考以下文章

java批量插入数据进数据库中

PreparedStatement和resultSet接口如何使用batch和get方法

JDBC PreparedStatement Batch continue insert on error

mysql数据库批量高速插入

PreparedStatement批量处理和事务

mybatis使用的一点小结:session运行模式及批量提交(转)