Insertion de plusieurs lignes dans MySQL avec PreparedStatement
Souvent, il est nécessaire d'insérer plusieurs lignes dans une base de données à la fois. Alors que les méthodes traditionnelles impliquant une itération sur chaque ligne et l'exécution d'une instruction d'insertion peuvent être inefficaces, MySQL propose une syntaxe qui permet d'insérer plusieurs lignes dans une seule requête :
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
Utilisation de PreparedStatements pour le traitement par lots
Pour optimiser ce processus à l'aide de Java et PreparedStatements, envisagez le traitement par lots, pris en charge par la classe PreparedStatement. En créant un lot avec addBatch(), vous pouvez l'exécuter en groupe à l'aide d'executeBatch().
Exemple de code
L'exemple suivant montre comment regrouper les insertions :
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(); } } } }
Optimisation de l'exécution par lots
Batching est exécuté tous les 1 000 éléments pour éviter les limitations potentielles des pilotes ou des bases de données JDBC.
Ressources supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!