Mybatis 批量更新

方式一:case when then....

<!-- 批量更新拼音字段 -->
<update id="updatePinyin">
  UPDATE sys_region_continents
  SET C_NAME_PINYIN =
  <foreach collection="idNames" index="index" item="item"
           open="CASE ID" separator=" " close="END">
    WHEN #{item.id} THEN #{item.pinyin}
  </foreach>
  WHERE ID IN
  <foreach collection="idNames" index="index" item="item"
           open="(" separator="," close=")">
    #{item.id,jdbcType=BIGINT}
  </foreach>
</update>

方式二:insert into ... on duplicate key update

如果列不能为空或者没有默认值也许会报错:Field XXX doesn't have a default value,

<!-- 批量更新拼音字段 -->
<update id="updatePinyin">
  INSERT INTO sys_region(ID,C_NAME_PINYIN) VALUES
  <foreach collection="idNames" index="index" item="item" open="" separator="," close="">
    (#{item.id},#{item.pinyin})
  </foreach>
  ON DUPLICATE KEY UPDATE
  ID = VALUES(ID),
  C_NAME_PINYIN = VALUES(C_NAME_PINYIN)
</update>

方式三:replace into

这种方式只有替换的字段(示例中ID,C_NAME_PINYIN)有值,其余都会被清空掉

<!-- 批量更新拼音字段 -->
<update id="updatePinyin">
  REPLACE INTO sys_region_continents(ID,C_NAME_PINYIN) VALUES
  <foreach collection="idNames" index="index" item="item" open="" separator="," close="">
    (#{item.id},#{item.pinyin})
  </foreach>
</update>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 人生不能靠心情活着,而要靠心态去生活。学会沉默,因为沉默是金;学会说不,因为做不到的事不要强求,做自已力所能及的事...
    金秋1017阅读 1,416评论 14 34
  • 谨以此文,献给抑郁症患者。希望你们可以感受到一点温暖,得到一点力量。 最近几期的《奇葩说》里,马薇...
    白梦颖阅读 1,408评论 0 0

友情链接更多精彩内容