Mybatis執行批量更新的sql(mysql中)


方式一

<update id="batchUpdate">
  <foreach collection="list" item="item" index="index" open="" close="" separator=";">
     update tableA set full_pinyin = #{item.fullPinyin}, first_letters =  #{item.firstLetters} where id =  #{item.id}
  </foreach>
 </update>

此種方式數據庫連接必須配置:&allowMultiQueries=true,如:jdbc:mysql://i.cnblogs.com:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
否則會報錯:

會生成多條sql,一次事務

方式二

<update id="batchUpdate">
        update tableA set full_pinyin =
        <foreach collection="list" item="item" index="index" separator=" " open="case id" close="end">
            when #{item.id} then #{item.fullPinyin}
        </foreach>
           ,first_letters =
        <foreach collection="list" item="item" index="index" separator=" " open="case id" close="end">
            when #{item.id} then #{item.firstLetters}
        </foreach>
        where id in
        <foreach collection="list" item="item" index="index"  separator="," open="(" close=")">
            #{item.id}
        </foreach>
    </update>

此種方式會生成一條sql,一次事務

如:

update tableA set full_pinyin =
         case id  
            when 570421480220418048 then 'huangmenji'
           
            when 570451322303307776 then 'fenjianceshikehu'
         end 
           , first_letters =
         case id  
            when 570421480220418048 then 'hmj'
           
            when 570451322303307776 then 'fjcskh'
         end 
        where id in
         (  
            570421480220418048
         , 
            570451322303307776
         );


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM