透過PreparedStatement向MySQL中插入多行使用PreparedStatement
在Java中,可以使用PreparedStatement的處理來高效地向批次表中插入多行處理能力。以前,為每一行執行單獨的 SQL 語句是常見的做法:
for (String element : array) { myStatement.setString(1, element[0]); myStatement.setString(2, element[1]); myStatement.executeUpdate(); }
但是,為了最佳化效能,MySQL提供了一個允許一次插入多行的語法:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
在PreparedStatement中使用這種方法需要批次:
以下範例說明了這個過程:
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 驅動程式或資料庫對批次大小施加的潛在限制。
有關更多詳細信息,請參閱 JDBC 教程使用PreparedStatement和Statement物件進行批量更新。
以上是如何使用Java的PreparedStatement有效率地將多行插入MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!