工作遇到的问题:mybatis注解批量修改

不知道是不是Tk.Mapper的通病,我在用@Update注解进行批量更新的时候报了个错误,大概是说无法get到这个实体对象,初步认为是java数据类型和mysql不一致,mybatis映射没生效。

//代码大概如下
@Update("<script>" +
"update table SET status = 0 " +
"where id in " +
"<foreach collection = 'list' item = 'item' index='index' open = '(' separator= ',' close = ')' >" +
"#{item.id>"
"</foreach>" +
"</script>"
List<test> batchUpdate(@Param("list") List<Integer> id)

我查阅网上都是用这一套来进行批量update,但是出问题了,问题出在#预处理这里(加JdbcType也没用)

最后看到一个csdn博客说的很详细,有两种处理方式,一种是用$这个我试过了没效果,报了新的错误,而且$有SQL注入的风险。

第二种是用collection(用来标识对象)和index(索引)组合,通过索引来遍历list,即

#{list[${index}]}

最终完美解决问题

参阅博客:Mybatis框架:foreach循环遍历字段以及mybatis取值报错There is no getter for property named '__frch_item_0’问题的记录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值