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

2021/11/11 2:10:26

本文主要是介绍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
         );


这篇关于Mybatis执行批量更新的sql(mysql中)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程