Myabtis中批量更新update多字段
在mybatis中批量更新多个字段
推荐使用如下操作:
方式1:在Dao层接口中:
void updateBatch(@Param("list")Listlist);
在对应的mapper文件中如下:
"updateBatch" parameType="java.lang.List">
update student
when id = #{item.id} then #{item.age}
when id = #{item.id} then mydata_table.age //原始值
when id = #{item.id} then #{item.name}
when id = #{item.id} then mydata_table.name //原始值
上面的sql语句打印出来,应该是这个样子的:
update student
set age = case
when id = #{item.id} then #{item.status}//此处应该是展开值
when id = #{item.id} then #{item.status}
....
end,
name = case
when id = #{item.id} then #{item.status}
...
end
where id in (?,?,?,?...);
1.prefix,suffix 表示在trim标签包裹的部分的前面或者后面添加内容
2.如果同时有prefixOverrides,suffixOverrides 表示会用prefix,suffix覆盖Overrides中的内容。
3.如果只有prefixOverrides,suffixOverrides 表示删除开头的或结尾的xxxOverides指定的内容
方式2:在Dao层接口方法定义同上
mapper文件如下:
update student name=#{item.name}, where id = #{item.id}
age = #{item.age}