Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Memasukkan Berbilang Baris dengan Cekap ke dalam MySQL Menggunakan PreparedStatements?

Bagaimanakah Saya Boleh Memasukkan Berbilang Baris dengan Cekap ke dalam MySQL Menggunakan PreparedStatements?

Barbara Streisand
Barbara Streisandasal
2024-11-26 13:44:10853semak imbas

How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatements?

Sisipkan Berbilang Baris MySQL dengan PreparedStatement

Untuk mengoptimumkan sisipan baris ke dalam jadual MySQL, anda boleh memanfaatkan sintaks yang disokong:

INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]

Walau bagaimanapun , jika bilangan baris untuk disisipkan secara dinamik, menggunakan PreparedStatement boleh mencabar.

Menggunakan PreparedStatement dengan AddBatch

Untuk memasukkan berbilang baris secara dinamik menggunakan PreparedStatement, anda boleh mencipta satu kelompok menggunakan kaedah addBatch() dan melaksanakannya dengan executeBatch().

Ini contohnya:

public void save(List<Entity> entities) throws SQLException {
    try (
        Connection connection = database.getConnection();
        PreparedStatement statement = connection.prepareStatement(SQL_INSERT);
    ) {
        int i = 0;

        for (Entity entity : entities) {
            statement.setString(1, entity.getSomeProperty());
            // ...

            statement.addBatch();
            i++;

            if (i % 1000 == 0 || i == entities.size()) {
                statement.executeBatch(); // Execute every 1000 items.
            }
        }
    }
}

Ini pendekatan melaksanakan kelompok setiap 1000 item, dengan mengambil kira pengehadan dalam pemacu JDBC atau panjang kelompok pangkalan data.

Kaedah Alternatif

Jika menggunakan PreparedStatement dengan batching tidak boleh dilaksanakan, kaedah alternatif untuk memasukkan berbilang baris termasuk:

  • Menggunakan kaedah insert() a PreparedStatement untuk setiap baris, dengan potensi had prestasi.
  • Menggunakan objek Statement, yang membenarkan pelaksanaan berbilang pernyataan SQL serentak.

Rujukan:

  • [Tutorial JDBC - Menggunakan PreparedStatement](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)
  • [Tutorial JDBC - Menggunakan Objek Penyata untuk Kemas Kini Kelompok](https://docs.oracle .com/javase/tutorial/jdbc/basics/batchupdates.html)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Berbilang Baris dengan Cekap ke dalam MySQL Menggunakan PreparedStatements?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn