欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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使用,对于很久没编码的我,实在是忘记得很干净。于是百度一堆,一致性 就是报错:

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

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

把打印出的sql语句放到navicat 执行  可以执行不会报错。那问题是什么(这里想来我1个小时),最后没办法 直接看mybatis的官网,把sql改成如下,正确执行。

 

下面给出正确的mybatis中foreach的map的姿势,避免大家以后在这上面浪费时间 ,直接上代码,涂改部分因公司保密协议问题(大家都知道是表名):

 

mapper

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

一定要加@Param注解

mapper.xml

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

 

最后 大家遇到此问题的时候 看到我的这篇文章 少耽误时间,yeah yeah yeah!!!!!!!

 

 

相关标签: mybatis mysql