mybatis之批量更新

这篇博客介绍了如何批量更新数据库中的记录,提供了一个使用动态SQL的示例,涉及`update`、`trim`、`foreach`和`if`标签的使用。讨论了在传参时使用`Map`和`List`的区别,以及遇到的问题和解决办法。强调了在处理批量操作时确保全部成功或全部失败的重要性。
摘要由CSDN通过智能技术生成

批量更新稍微复杂一些:
写个例子 :

<update id="xxx" parameterType="list">
    update
    xxx(这个是表名)
    <trim prefix="set" prefixOverrides=",">(这一行是拼接set )
        <trim prefix="code = case" suffix="end,">(这个里面的code是需要修改的字段)
            <foreach collection="list" item="item">(正常的foreach拼接)
                <if test="item.code != null and item.code != ''">
                    when id = #{item.id} then #{item.code}(当id匹配上之后,修改对应的code)
                </if>
            </foreach>
        </trim>
        <trim prefix="name = case" suffix="end">(这个里面的name是需要修改的字段,最后的end不要加,号)
            <foreach collection="list" item="item">
                <if test="item.name != null and item.name != ''">
                    when id = #{item.id} then #{item.name}(当id匹配上之后,修改对应的name)
                </if>
            </foreach>
        </trim>
    </trim>
    <where>
        <foreach collection="giftPackageDetailList" item="item" separator="or">
            id = #{item.id} (条件,根据id更新)
        </foreach>
    </where>
</update>

基本上一般的批量修改都可以套用.需要修改多少字段,自己定.
要么全部成功,要么全部失败,使用int去接收返回值,会接收到修改的条数的.

我尝试了一下用map<Long,Bean> 进行传参,但是如果不使用@param进行指定的话,即使是一个入参,也会出现映射为空的情况. 当我去具体指定了那个参数的时候,反而可以了.
官方说,当类型为map的时候,index为键,item为值,在我这里也就是bean.一个入参的话,应该不会出现映射为空的情况啊,list和map还是不一样.list简单一些.map复杂一些.如果是Map<String,Obj>的话,即使obj是一个数组,直接输入数组的名字,然后可以当中collection来使用.但是我那种使用,没有指定具体的映射关系,反而还不行了.
具体的规则不清楚.但是目前的来说,够用了.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值