Einfügen mehrerer Zeilen in MySQL mit PreparedStatement
Oft besteht die Notwendigkeit, mehrere Zeilen gleichzeitig in eine Datenbank einzufügen. Während herkömmliche Methoden, bei denen jede Zeile durchlaufen und eine Einfügeanweisung ausgeführt wird, ineffizient sein können, bietet MySQL eine Syntax, die das Einfügen mehrerer Zeilen in einer einzigen Abfrage ermöglicht:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
Verwenden von PreparedStatements für die Stapelverarbeitung
Um diesen Prozess mithilfe von Java und PreparedStatements zu optimieren, sollten Sie die Stapelverarbeitung in Betracht ziehen, die von der PreparedStatement-Klasse unterstützt wird. Indem Sie mit addBatch() einen Batch erstellen, können Sie ihn mitexecuteBatch() als Gruppe ausführen.
Codebeispiel
Das folgende Beispiel zeigt, wie Einfügungen stapelweise durchgeführt werden:
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(); } } } }
Batch-Ausführung Optimierung
Batching wird alle 1000 Elemente ausgeführt, um mögliche Einschränkungen von JDBC-Treibern oder Datenbanken zu vermeiden.
Zusätzliche Ressourcen
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Java PreparedStatements effizient mehrere Zeilen in MySQL einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!