mybatis3.4.6 批量更新 foreach 遍历map 的正确姿势

好久没编码了!最近开始编码遇到一个问题 !一个批量修改的问题,就是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!!!!!!!

 

 

おすすめ

転載: blog.csdn.net/q1035331653/article/details/109994188