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

相关推荐
智航GIS几秒前
9.2 多进程入门
数据库·python
tkevinjd几秒前
IO流3(字符流)
java
不吃香菜5671 分钟前
SpringBoot 与 SpringCloud用法和区别
java
DemonAvenger1 分钟前
Redis与微服务:分布式系统中的缓存设计模式
数据库·redis·性能优化
柒.梧.5 分钟前
Spring JDBC实战指南:从基础操作到事务管理全解析
数据库·oracle
这是程序猿5 分钟前
基于java的SpringBoot框架医院药品管理系统
java·开发语言·spring boot·后端·spring·医院药品管理系统
rchmin7 分钟前
PostgreSQL与MySQL选型对比
数据库·mysql·postgresql
Data_agent9 分钟前
微店商品列表API接口指南
大数据·数据库·python
tkevinjd9 分钟前
IO流4(小练习)
java·io流
Vic1010110 分钟前
PostgreSQL 中序列(bigserial 和手动序列)的使用与注意事项
java·大数据·数据库·postgresql