• 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
             );
    
  • 相关阅读:
    B-Tree索引的学习记录
    mysql NOW,CURRENT_TIMESTAMP,SYSDATE 之间的区别
    哈希索引
    MyISAM和InnoDB的区别
    负载均衡记录一
    哈希索引
    mysql ZEROFILL属性
    redis常用命令及使用场景
    js Function()构造函数
    书写闭包的时候需注意一下情况
  • 原文地址:https://www.cnblogs.com/zhangxianming/p/15534455.html
Copyright © 2020-2023  润新知