类似于mybatis里的updateBatchById方法
update product
<trim prefix="set" suffixOverrides=",">
<trim prefix="name = case id" suffix="end,">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.name}
</foreach>
</trim>
<trim prefix="num = case id" suffix="end,">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.num}
</foreach>
</trim>
<trim prefix="unit = case id" suffix="end,">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.unit}
</foreach>
</trim>
<trim prefix="price = case id" suffix="end,">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.price}
</foreach>
</trim>
<trim prefix="price_type = case id" suffix="end,">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.priceType}
</foreach>
</trim>
<trim prefix="supplier_id = case id" suffix="end,">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.supplierId}
</foreach>
</trim>
<trim prefix="category_id = case id" suffix="end,">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.categoryId}
</foreach>
</trim>
<trim prefix="category_2id = case id" suffix="end,">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.category2Id}
</foreach>
</trim>
<trim prefix="category_3id = case id" suffix="end">
<foreach collection="list" item="item" index="index">
when #{item.id} then #{item.category3Id}
</foreach>
</trim>
where id in
<trim>
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</trim>
</trim>
sql原型
update product
set category_id = case id
when 1001254275 then 0
when 1001254276 then 0
when 1001254277 then 0
end,
category2_id = case id
when 1001254275 then null
when 1001254276 then null
when 1001254277 then null
end,
category3_id = case id
when 1001254275 then null
when 1001254276 then null
when 1001254277 then null
end
where id in (1001254275,1001254276,1001254277)