UPDATE tb_dataview SET cfg_value ='5806',cfg_item ='实有小区'WHERE id =13;UPDATE tb_dataview SET cfg_value ='5661',cfg_item ='实有小区A类'WHERE id =14
使用foreach或外部拼接好来塞到update标签中都是不可行的(更新会报错)。
<updateid="updateBatch"parameterType="java.util.List"><foreachcollection="list"item="data"index="index"separator=";">
UPDATE tb_dataview SET cfg_value = #{data.value}
<iftest="data.name != null">
,cfg_item = #{data.name}
</if>
WHERE id = #{data.id}
</foreach></update>
下面这种批量更新测试正常
<updateid="updateBatch"parameterType="java.util.List">
update tb_dataview
<trimprefix="set"suffixOverrides=","><trimprefix="cfg_value = case"suffix="end,"><foreachcollection="list"item="i"index="index">
when id=#{i.id} then #{i.value}
</foreach></trim><trimprefix="cfg_item = case"suffix="end,"><foreachcollection="list"item="i"index="index"><iftest="i.name!=null and i.name != ''">
when id=#{i.id} then #{i.name}
</if></foreach></trim></trim>
where
<foreachcollection="list"separator="or"item="i"index="index">
id=#{i.id}
</foreach></update>