mybatis 用<foreach>根据ID批量更新时的一个注意点。

看接口。传入一个Long型的List。

int updateReadCount(@Param(value = "topicIdList") List<Long> topicIdList);

xml里面循环update.

<update  id="updateReadCount" parameterType="java.util.List">
        update CTS
        set read_count = read_count + 1
        where topic_id in
        <foreach item="item" index="index" collection="topicIdList" open="("  close=")" separator=",">
         #{item.topicId}
        </foreach>
  </update>

就是直接复制了别人的代码,改了一改。怎么都跑不通。。。。。。。

问题就出在这个item,item 表示集合中每一个元素进行迭代时的别名。

List<Long> topicIdList  因为时Long型(不是entity封装着的),就不需要别名了。改为如下就可以跑通了。

<update  id="updateReadCount" parameterType="java.util.List">
        update CTS
        set read_count = read_count + 1
        where topic_id in
        <foreach item="topicId" index="index" collection="topicIdList" open="("  close=")" separator=",">
         #{topicId}
        </foreach>
  </update>

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值