INSÉRER DANS `utilisateur` (nom d'utilisateur) VALEURS"/> INSÉRER DANS `utilisateur` (nom d'utilisateur) VALEURS">

Maison  >  Article  >  base de données  >  Comment faire fonctionner l'insertion de lots mybaits

Comment faire fonctionner l'insertion de lots mybaits

PHP中文网
PHP中文网original
2017-06-21 16:04:121286parcourir

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>

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>

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>

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>

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!

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