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>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值