Insérer plusieurs lignes dans MySQL avec PreparedStatement à l'aide de PreparedStatement
En Java, l'insertion efficace de plusieurs lignes dans une table MySQL peut être réalisée à l'aide du lot de PreparedStatement capacités de traitement. Auparavant, l'exécution d'instructions SQL individuelles pour chaque ligne était une pratique courante :
for (String element : array) { myStatement.setString(1, element[0]); myStatement.setString(2, element[1]); myStatement.executeUpdate(); }
Cependant, pour optimiser les performances, MySQL propose une syntaxe qui permet d'insérer plusieurs lignes en une seule fois :
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
L'utilisation de cette approche avec PreparedStatement nécessite un traitement par lots :
Voici un exemple illustrant le processus :
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. } } } }
Exécuter le lot toutes les 1 000 lignes permet d'éviter les limitations potentielles imposées par les pilotes JDBC ou les bases de données sur la taille des lots.
Reportez-vous au didacticiel JDBC pour plus de détails. sur l'utilisation des objets PreparedStatement et Statement pour les mises à jour par lots.
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!