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

相关推荐
zxd0203112 分钟前
DevOps + CI/CD:从理念到 Jenkins 实战落地
java·开发语言
qq_白羊座3 分钟前
GitLab CI + Jenkins 双流水线模式Jenkins 端实现
java·开发语言
幻灭行度4 分钟前
Redis ACL 实现多账号权限隔离
数据库·redis·oracle
填满你的记忆5 分钟前
《RAG 完整工作流程详解》
java·ai·agent·rag
Kurisu5756 分钟前
深度解析:Go 语言 GMP 调度器模型与内核线程探测
java·数据库·golang
架构源启6 分钟前
Spring AI进阶系列(11) Spring AI Multi-Agent 协作系统:辩论、投票与共识机制实战
java·人工智能·spring
Lao A(zhou liang)的菜园8 分钟前
作为Oracle DBA,如何快速处理HANG类故障?
数据库·oracle·dba
一条泥憨鱼11 分钟前
深入理解Java反射(超详细)
java·开发语言·spring·mybatis·反射
J-query18 分钟前
修改AndroidStudio的Boot Java Runtime for the IDE后,AndroidStudio启动就报错
java·开发语言·ide·android studio
Lao A(zhou liang)的菜园19 分钟前
作为DBA,如何快速处理Oracle连接类故障?
数据库·oracle·dba