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

相关推荐
数据库学啊1 分钟前
时序数据库选型
数据库·时序数据库
TDengine (老段)2 分钟前
强杀服务、重启系统及断电对 TDengine 影响
运维·服务器·数据库·物联网·时序数据库·tdengine·涛思数据
Jiong-9522 分钟前
Java求职面试:谢飞机的奇妙旅程
java·jvm·线程池·多线程·hashmap·juc·arraylist
数据库学啊4 分钟前
时序数据库怎么选
数据库·时序数据库
小二·7 分钟前
Java核心机制精讲:深入理解 static 关键字与引用传递
java·java-ee
IDOlaoluo9 分钟前
apache-tomcat-7.0.42.tar.gz 下载与安装完整教程(附安装包)
java·tomcat·apache
喝养乐多长不高13 分钟前
RabbitMQ:消息确认
java·rabbitmq·java-rabbitmq
baivfhpwxf202316 分钟前
SQL Server 创建一个删除分表的作业,每月执行一次,删除表的逻辑放到存储过程里
数据库
草莓熊Lotso1 小时前
C++ STL map 系列全方位解析:从基础使用到实战进阶
java·开发语言·c++·人工智能·经验分享·网络协议·everything
shura10141 小时前
如何优雅地实现参数校验
java·开发语言