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

相关推荐
IntoTech英途汇骏7 分钟前
数据虚拟化平台选型分析:主流厂商解决方案与技术能力对比
数据库
denlaku9 分钟前
JDK 20 新特性详解
java
木井巳14 分钟前
【JavaEE】SpringBoot 统一功能处理: 拦截器、统一返回与全局异常
java·spring boot·后端·spring·java-ee
SL-staff18 分钟前
JVS-Rules金融风控实践:四大原生能力的技术实现与可落地配置指南
java·决策树·规则引擎·函数计算·金融风控·jvs-rules·数据源抽象
程序猿阿森20 分钟前
RAG 落地实践:离线索引 + 在线 FAQ 与混合检索全流程拆解
数据库·人工智能·rag
图特摩斯科技21 分钟前
本体建模方式升级:OntoStudio 独创,2D vs 3D 构建本体应用
数据库·3d
天河归来22 分钟前
请求原子性实现方式:Redis 互斥与数据库事务协同
数据库·redis·缓存
Navicat中国29 分钟前
如何将 Navicat 的 AI 助手连接到本地 LLM
数据库·人工智能·navicat·本地llm
Gauss松鼠会40 分钟前
GaussDB 内存相关参数及故障诊断
运维·数据库·sql·oracle·性能优化·架构·gaussdb
Thomas.Sir1 小时前
第6课:SpringBoot4.x 核心注解全解:Component、Bean、Scope、Lazy等IOC相关注解
java·spring boot