关闭

Mybaties批量修改每一条不同数据

标签: mybatiesmysqlupdate批量修改数据
276人阅读 评论(0) 收藏 举报

先建立实体,我需要用到的修改的数据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++) {
    /**获取对应的subsizeparents_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>

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场