首頁 > Java > java教程 > 如何使用PreparedStatement有效率地將多行插入MySQL?

如何使用PreparedStatement有效率地將多行插入MySQL?

Barbara Streisand
發布: 2024-11-26 13:44:10
原創
851 人瀏覽過

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

使用PreparedStatement插入多個MySQL行

要最佳化MySQL表中的行插入,您可以利用支援的語法:

INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
登入後複製

但是,如果要動態插入的行數,使用PreparedStatement即可

將PreparedStatement與AddBatch一起使用

要使用PreparedStatement動態插入多行,您可以使用addBatch()方法建立批次,並使用executeBatch()執行它。

這是一個範例:

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.
            }
        }
    }
}
登入後複製

此方法每隔1000 個項目,考慮到 JDBC 驅動程式或資料庫批次長度的限制。

替代方法

如果使用帶有批次的PreparedStatement 不可行,插入多行的替代方法包括:

  • 對每一行使用PreparedStatement的insert( )方法,具有潛在的性能限制。
  • 使用 Statement 對象,允許一次執行多個 SQL 語句。

參考:

  • [ JDBC 教學- 使用PreparedStatement](https://docs.oracle.com/javase/tutorial/jdbc/tutorial/jdbc/ basics/prepared.html)
  • [JDBC 教學- 使用Statement物件進行批次更新](https://docs.oracle .com/javase/tutorial/jdbc/basics/batchupdates.html)

以上是如何使用PreparedStatement有效率地將多行插入MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板