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

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

Barbara Streisand
Libérer: 2024-12-01 01:59:14
original
303 Les gens l'ont consulté

How Can I Efficiently Insert Multiple Rows into MySQL Using Java PreparedStatements?

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')[, ...]
Copier après la connexion

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();
            }
        }
    }
}
Copier après la connexion

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

  • [Tutoriel JDBC - Utilisation PreparedStatement](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)
  • [Tutoriel JDBC - Utilisation d'objets d'instruction pour les mises à jour par lots](https://docs.oracle .com/javase/tutorial/jdbc/basics/batchupdates.html)

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal