public class BatchTest {

    /**

     * @param args

     * @throws SQLException

     */

    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​();//sql语句封包一起发送到数据库服务器

            }

            int[] is = ps.​executeBatch​();

        } finally {

            JdbcUtils.free(rs, ps, conn);

        }

    }

}