关于 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) 才能查出数据

相关推荐
顾温4 分钟前
default——C#/C++
java·c++·c#
空中海11 分钟前
02 ArkTS 语言与工程规范
java·前端·spring
楚国的小隐士20 分钟前
在AI时代,如何从0接手一个项目?
java·ai·大模型·编程·ai编程·自闭症·自闭症谱系障碍·神经多样性
不剪发的Tony老师23 分钟前
dblab:一款基于终端的交互式数据库客户端
数据库·sql
yaki_ya28 分钟前
yaki-C语言:从概念基础到内存解析---数组(array)完全指南
java·c语言·算法
刃神太酷啦29 分钟前
扒透 STL 底层!map/set 如何封装红黑树?迭代器逻辑 + 键值限制全手撕----《Hello C++ Wrold!》(23)--(C/C++)
java·c语言·javascript·数据结构·c++·算法·leetcode
亚历克斯神29 分钟前
Java 25 模式匹配增强:让代码更简洁优雅
java·spring·微服务
星辰徐哥32 分钟前
Rust异步测试与调试的实践指南
android·java·rust
星河耀银海34 分钟前
C++ 运算符重载:自定义类型的运算扩展
android·java·c++
feng_blog66881 小时前
C++线程池|解决死锁、崩溃、丢任务所有痛点
java·开发语言·c++