mybatis3.4.6 批量更新 foreach 遍历map 的正确姿势
程序员文章站
2022-05-25 17:01:32
...
好久没编码了!最近开始编码遇到一个问题 !一个批量修改的问题,就是mybatis foreach 的使用。
当时使用的场景 ,前端 传逗号拼接的字符串id, 修改id对应数据的数据顺序 ,顺序 就是id 的顺序.
就是一个条件(单个id值) 修改一个值(传入的id的顺序) ,
1、 把条件作为Map 的key 修改值是value,用map入参
2、用List<Object> 或者数组 ,把条件和值封装成对象放进list集合或者array数组
3、代码使用for循环调用mapper方法 穿两个参数。
因为考虑到第二种用法,需要不断创建对象 放进数组在 遍历数组获取对象取值。从虚拟机的堆内存考虑,放弃------------------------
第三种方法,会循环多少次就执行多少条sql语句,放弃-----------------------
于是使用Map,
可是在mybatis中参数是map的foreach使用,对于很久没编码的我,实在是忘记得很干净。于是百度一堆,一致性 就是报错:
把打印出的sql语句放到navicat 执行 可以执行不会报错。那问题是什么(这里想来我1个小时),最后没办法 直接看mybatis的官网,把sql改成如下,正确执行。
下面给出正确的mybatis中foreach的map的姿势,避免大家以后在这上面浪费时间 ,直接上代码,涂改部分因公司保密协议问题(大家都知道是表名):
mapper
一定要加@Param注解
mapper.xml
最后 大家遇到此问题的时候 看到我的这篇文章 少耽误时间,yeah yeah yeah!!!!!!!