Maison >Java >javaDidacticiel >Comment puis-je insérer efficacement plusieurs lignes dans MySQL à l'aide de PreparedStatement ?

Comment puis-je insérer efficacement plusieurs lignes dans MySQL à l'aide de PreparedStatement ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 11:16:12778parcourir

How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatement?

Insertion de 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 :

  1. Utilisez addBatch() La méthode ajoute chaque ligne de données au lot.
  2. Utilisez la méthode executeBatch() pour exécuter le traitement par lots.

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 :

  • Tutoriel JDBC - Utilisation de PreparedStatement
  • Tutoriel JDBC - Utilisation d'objets d'instruction 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn