mybatis批量更新

420 阅读1分钟

利用case when then 实现批量更新

<update id="updateBatch" parameterType="java.util.List">
  <!--@mbg.generated-->
  update t_selling_partner_snapshot_sync_push_status
  <trim prefix="set" suffixOverrides=",">
    <trim prefix="seller_id = case" suffix="end,">
      <foreach collection="list" index="index" item="item">
        when id = #{item.id} then #{item.sellerId}
      </foreach>
    </trim>
    <trim prefix="region = case" suffix="end,">
      <foreach collection="list" index="index" item="item">
        when id = #{item.id} then #{item.region}
      </foreach>
    </trim>
    <trim prefix="is_available = case" suffix="end,">
      <foreach collection="list" index="index" item="item">
        when id = #{item.id} then #{item.isAvailable}
      </foreach>
    </trim>
  </trim>
  where id in
  <foreach close=")" collection="list" item="item" open="(" separator=", ">
    #{item.id}
  </foreach>
</update>