JDBC的批处理功能

批处理,可以大幅度提升大量增、删、改的速度。

PreparedStatement.addBatch();//批量添加

PreparedStatement.executeBatch();//批量更新

 

public class BatchTest {

 

    public static void main(String[] args) throws SQLException {

       long start = System.currentTimeMillis();

       for (int i = 0; i < 100; i++)

           create(i);

       long end = System.currentTimeMillis();

       System.out.println("create:" + (end - start));

 

       start = System.currentTimeMillis();

       createBatch();

       end = System.currentTimeMillis();

       System.out.println("createBatch:" + (end - start));

    }

    //普通的添加方法

    static void create(int i) throws SQLException {

       Connection conn = null;

       PreparedStatement ps = null;

       ResultSet rs = null;

       try {

           conn = JdbcUtils.getConnection();

           String sql = "insert into user(name,birthday, money) values (?, ?, ?) ";

           ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

           ps.setString(1, "no batch name" + i);

           ps.setDate(2, new Date(System.currentTimeMillis()));

           ps.setFloat(3, 100f + i);

           ps.executeUpdate();

       } finally {

           JdbcUtils.free(rs, ps, conn);

       }

    }

    //批量添加

    static void createBatch() throws SQLException {

       Connection conn = null;

       PreparedStatement ps = null;

       ResultSet rs = null;

       try {

           conn = JdbcUtils.getConnection();

           String sql = "insert into user(name,birthday, money) values (?, ?, ?) ";

           ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

           for (int i = 0; i < 100; i++) {

              ps.setString(1, "batch name" + i);

              ps.setDate(2, new Date(System.currentTimeMillis()));

              ps.setFloat(3, 100f + i);

              ps.addBatch();

           }

           int[] is = ps.executeBatch();//int[] is是执行后自动生成的主键

       } finally {

           JdbcUtils.free(rs, ps, conn);

       }

    }

}

 

你可能感兴趣的:(sql,jdbc)