关于 mapper.xml 中 sql使用 in 执行无效的原因

1.SQL

xml 复制代码
	<select id="getList" resultType="com.xxx.xxx.front.response.ConvertList">
        select
        	*
        from
        	store_product
        where
        	1=1
        <if test="cateIdList != null">
            and cate_id in
            <foreach collection="cateIdList" item="cateIdList" index="index" open="(" separator="," close=")">
                #{cateIdList}
            </foreach>
        </if>
    </select>

2.最终执行的sql拼接如下

  and cate_id in ('753','753')

3.解决方案

  in ('753','753') 这样的sql在数据库执行之后是查不到任何数据的,即便cate_id本身的确是字符串也是一样。in()不能比较字符,如果要比较字符还是得使用like或者or。所以只能将入参改成 Integer 最终拼接为 in (753,753) 才能查出数据

相关推荐
AugustRed2 分钟前
A2UI 完整学习指南(含 Java 后端 + 前端实战示例)
java·开发语言·前端
曹牧6 分钟前
Oracle:嵌套子查询
数据库·oracle
王莎莎-MinerU6 分钟前
Agent 时代,科学数据 API 需要重新设计
大数据·前端·数据库·人工智能·个人开发
jghhh016 分钟前
MATLAB蒙特卡罗方法求解伊辛模型
数据库·人工智能·matlab
程序猿乐锅7 分钟前
【MySQL | 第五篇】 MySQL 性能分析:如何查询慢 SQL
java·sql·mysql
一个天蝎座 白勺 程序猿9 分钟前
时序大模型云服务快速上手:定义与核心能力
数据库·iotdb·云服务·timechoai
lee_curry10 分钟前
tomcat+springmvc+spring源码流通过程
java·spring·tomcat·springmvc
w1wi10 分钟前
【兼职】边学边练的AI网站
java·人工智能·ai·ai编程·ai写作
basketball61611 分钟前
C++进阶:1. 引用折叠规则
java·开发语言·c++
sukioe11 分钟前
Redis 数据类型入门:5 大核心类型与常见业务场景
数据库·redis·缓存