本文主要是介绍Mybaties批量修改每一条不同数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先建立实体,我需要用到的修改的数据set后面的和where条件后的参数
public class FcUpdata {private Integer subsize;//我要修改的set后面的值是变量哦private Integer id;//我要修改的对应的id
impl下面的数据
/**创建一个修改传值的参数集合对象*/
List<FcUpdata> list = new ArrayList<>();
for (int i=0;i<updataId.length;i++) {/**获取对应的subsize和parents_id,对应删除*/FcUpdata fcu = new FcUpdata(updataIdSubsize[i], updataId[i]);list.add(fcu);
}
Mapper.doUpdate(list);
这是打印出来的结果,你可以对比下面的mybaties数据
UPDATE 表名TableName
SET subsize =CASE
WHEN ? THEN subsize-?
WHEN ? THEN subsize-?
WHEN ? THEN subsize-?
END
WHERE id in ( ? , ? , ? )138(Integer), 3(Integer),
145(Integer), 2(Integer),
148(Integer), 4(Integer),
138(Integer), 145(Integer), 148(Integer)
mybaties写法,(
prefix="subsize =CASE id"
)这里的case 后面的id你必须要写,这个是标记当前执行到另一条语句了,看看case end 语句的结构你就了解它怎么工作的了。
<update id="doUpdateSubSize">UPDATE 表名TableName<trim prefix="SET" suffixOverrides=""><trim prefix="subsize =CASE id" suffix="END"><foreach collection="item" item="items" index="index">WHEN #{items.id} THEN subsize-#{items.subsize}</foreach></trim></trim>WHERE id in<foreach collection="item" item="items" open="(" separator="," close=")" index="index">#{items.id}</foreach>
</update>
这篇关于Mybaties批量修改每一条不同数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!