推荐使用如下写法,其中<trim>中的内容是要更新的字段值
update content_channel
<trim prefix="set" suffixOverrides=",">
<trim prefix="channel_sort = case" suffix="end,">
<foreach collection="channelList" item="i" index="index">
<if test="i.channelSort!=null">
when id=#{i.id} then #{i.channelSort}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="channelList" index="index" item="item" separator="," open="(" close=")">
#{item.id}
</foreach>
如果使用以下写法,效率较低,而且一次性执行多条sql,容易造成堵塞,出错后不回滚,且 数据库链接语句中要注意:这种方法必须在配置连接数据库url后面带一个参数 &allowMultiQueries=true,表示允许批量操作,例 jdbc:mysql://localhost:3306/mysqlTest?characterEncoding=utf-8&allowMultiQueries=true
————————————————
<update id="updateNewStock" parameterType="java.util.List">
<foreach collection="list" item="item" open="" close="" separator=";">
UPDATE content_channel
<set>
channelSort=#{item.stock}
</set>
<where>
id= #{item.id}
</where>
</foreach>
</update>