Maison >Java >javaDidacticiel >Comment puis-je insérer efficacement plusieurs lignes dans MySQL à l'aide de PreparedStatement ?
Lorsque l'on tente d'insérer efficacement de nombreuses lignes dans une table MySQL, on peut rencontrer des limitations avec l'approche PreparedStatement traditionnelle car elle ne peut pas le nombre de lignes à insérer est déterminé à l'avance dans PreparedStatement.
Afin d'optimiser le processus d'insertion, MySQL fournit la syntaxe d'insertion par lots, comme suit :
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
Utiliser PreparedStatement pour l'insertion par lots
Utiliser PreparedStatement Les étapes d'insertion par lots sont les suivantes :
Exemple de code :
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. } } } }
Il convient de noter que lors de l'insertion par lots, il est recommandé de l'effectuer tous les certain nombre de lignes (par exemple exemple, 1000), car certains pilotes ou bases de données JDBC peuvent avoir des limitations sur la longueur des lots.
Références associées :
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!