要优化MySQL表中的行插入,您可以利用支持的语法:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
但是,如果要动态插入的行数,使用PreparedStatement即可
要使用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高效地将多行插入MySQL?的详细内容。更多信息请关注PHP中文网其他相关文章!