MyBatis中使用foreach循环的坑及解决

作者:小黄鸭007 时间:2023-11-02 12:47:51 

使用foreach循环的坑

我们首先看一段MyBatis中使用foreach循环的sql:

SELECT * FROM table where id in
<foreach item="item" collection="ids1" open="(" close=")" index="0" separator=",">
#{item}
</foreach>

这段sql执行会添加几个占位符,正确写法foreach写到一行:

正确写法为

SELECT * FROM table where id in
<foreach item="item" collection="ids1" open="(" close=")" index="0" separator=",">#{item}</foreach>

忽现的Mybatis foreach失效记录

传进来的 list 肯定有值得,本身代码没有问题。 线上也算跑了大半年了。 而且出现的问题时也只在本机上.

mybatis.version=3.2.8

代码:

AND (
   <foreach collection="list" open=" id IN (" separator="," close=")" item="id" index="index">
     #{id}
   </foreach>
OR (GRADE In ('0','1')
   AND user_type = '5'
 )
)

正确结果应该是:

AND ( id IN ('1','2','3')
  OR (GRADE In ('0', '1') AND user_type = '5')
)

实际结果:

AND ( 
  OR (GRADE In ('0', '1') AND user_type = '5')
)

造成SQL 执行语法错误.

复现方式:暂无复现方法

解决方案

随便改了一下Dao.java的一个文件内容(没做实际性的内容改动,ide 重新加载了下Dao). bug就好了. 好了 . 了...

来源:https://blog.csdn.net/qq_41537781/article/details/106012259

标签:MyBatis,foreach,循环
0
投稿

猜你喜欢

  • Spring Boot 集成Mybatis实现主从(多数据源)分离方案示例

    2023-08-10 07:43:21
  • spring cloud zuul修改请求url的方法

    2022-09-03 01:44:19
  • 秒懂Java枚举类型(enum)

    2023-03-30 07:39:41
  • c# 网址压缩简单实现短网址

    2022-10-06 15:37:17
  • Java读写Windows共享文件夹的方法实例

    2022-10-02 02:25:45
  • 浅谈Java与C#的一些细微差别

    2022-09-25 06:33:36
  • C#中async和await的深入分析

    2023-09-14 17:11:20
  • C#如何自定义multipart/form-data的解析器

    2023-12-04 18:59:03
  • Android OKHttp使用简介

    2022-05-01 06:28:38
  • SpringBoot在项目中访问静态资源步骤分析

    2022-12-13 08:04:31
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法

    2023-10-14 19:34:51
  • 判断图片-判断位图是否是黑白图片的方法

    2023-06-09 17:20:07
  • 使用java + selenium + OpenCV破解腾讯防水墙滑动验证码功能

    2023-07-23 14:32:47
  • 浅谈java异常处理之空指针异常

    2022-07-31 03:12:27
  • Android实现背景图片轮播

    2023-09-05 00:16:27
  • Android自定义加载圈的方法

    2023-07-16 14:38:46
  • Java基于ArrayList实现群主发红包功能

    2022-04-06 20:34:09
  • Java结构型设计模式中建造者模式示例详解

    2023-04-24 13:37:31
  • 带你了解C++的数组与函数

    2023-12-10 20:44:18
  • Java Socket通信(一)之客户端程序 发送和接收数据

    2023-07-05 00:34:48
  • asp之家 软件编程 m.aspxhome.com