Maison > base de données > tutoriel mysql > le corps du texte

Comment faire fonctionner l'insertion de lots mybaits

PHP中文网
Libérer: 2017-06-21 16:04:12
original
1301 Les gens l'ont consulté

Lorsque nous insérons des données par lots, nous devons obtenir l'identifiant des données insérées.

De cette façon :

 <insert id="insertUser" parameterType="gys.entity.User" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user`
        (userName)
        VALUES
        (#{userName})</insert>
Copier après la connexion

Ce n'est pas un problème.

Mais parfois, cela implique une insertion par lots, et pour obtenir l'identifiant inséré

écrivez comme ceci :

<insert id="insertUserBatch1" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user`
        (userName)
        VALUES<foreach collection="list" separator="," item="item">(#{item.userName})</foreach></insert>
Copier après la connexion

Une exception se produira après l'exécution comme ça.

C'est parce que la version de mybatis que vous utilisez est trop basse. Par exemple, j'utilise la version 3.2.2, qui est un bug dans mybatis.

Si vous changez. vers la version 3.4.4, il n'y aura aucun problème.

Si l'instruction SQL ci-dessus est écrite différemment, une exception sera à nouveau signalée (joindre l'insertion dans foreach)

Par exemple :

<insert id="insertUserBatch2"> <foreach collection="list" separator=";" item="item"> INSERT INTO `user`
                (userName)
            VALUES
                (#{item.userName})         </foreach></insert>
Copier après la connexion

De la même manière, la mise à jour par lots de la mise à jour a également ce problème

<update id="updateUserBatch"><foreach collection="list" item="item" separator=";">update `user` set
                userName=#{item.userName}
            where
                userId=#{item.userId}</foreach></update>
Copier après la connexion

C'est parce que mybatis ne peut en exécuter qu'un seul instruction SQL par défaut,

peut relier le chemin. En ajoutant des paramètres, vous pouvez exécuter plusieurs instructions SQL allowMultiQueries=true

.

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal