通过PreparedStatement向MySQL中插入多行使用PreparedStatement
在Java中,可以使用PreparedStatement的批处理来高效地向MySQL表中插入多行处理能力。以前,为每一行执行单独的 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中文网其他相关文章!