Mehrere Zeilen mit PreparedStatement mithilfe von PreparedStatement in MySQL einfügen
In Java kann das effiziente Einfügen mehrerer Zeilen in eine MySQL-Tabelle mithilfe des Batches von PreparedStatement erreicht werden Verarbeitungsmöglichkeiten. Bisher war es üblich, für jede Zeile einzelne SQL-Anweisungen auszuführen:
for (String element : array) { myStatement.setString(1, element[0]); myStatement.setString(2, element[1]); myStatement.executeUpdate(); }
Um die Leistung zu optimieren, bietet MySQL jedoch eine Syntax, die das Einfügen mehrerer Zeilen auf einmal ermöglicht:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
Die Verwendung dieses Ansatzes mit PreparedStatement erfordert eine Stapelverarbeitung:
Hier ist ein Beispiel, das den Prozess veranschaulicht:
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. } } } }
Der Stapel wird alle 1000 Zeilen ausgeführt hilft dabei, potenzielle Einschränkungen der Stapelgröße durch JDBC-Treiber oder Datenbanken zu vermeiden.
Weitere Einzelheiten finden Sie im JDBC-Tutorial zur Verwendung von PreparedStatement- und Statement-Objekten für Batch-Updates.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Javas PreparedStatement effizient mehrere Zeilen in MySQL einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!