mybatis sql语句中 in() 长度为0或null的情况

比如:

select * from A
where colName IN
<foreach collection="moCodeList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>

想要查询 colName IN ( 列表) 条件下的数据,如果列表 为null 或者长度为0
语句就变成了 colName IN () 这样的语法是不对的

改进

select * from A
where colName IN
<if test="moCodeList != null and moCodeList.size>0">
   <foreach collection="moCodeList" item="item" index="index" open="(" close=")" separator=",">
     #{item}
   </foreach>
</if>
<if test="moCodeList==null or moCodeList.size==0">
    and 1=0
</if>

用if 标签 来区分,如果IN 条件里的列表为0 那么,走条件 1=0

(0)

相关推荐

  • 成功sql语句中直接写变量

    public static PagedResultInOut<T> SqlPage<T>(string sql, string order, int page, int siz ...

  • oracle sql语句中like %参数%的用法

    oracle sql语句中like %参数%的用法,在网上找了很久没找到类似的帖子,因此分享一下我的收获,希望对看到的人有帮助 今天在处理oracle数据库数据merge的时候遇到一个问题: 在mer ...

  • 【Access】SQL语句中WHERE子句和HAVING 子句的异同

    初学SQL语句的时候,很多朋友总是无法理解HAVING 子句和WHERE子句之间区别,今天我们就来细细谈一谈这个问题.首先列出它们之间的相同和区别,然后我们举例说明. 一.相同点: 二者的相同点是在功 ...

  • 【Access】SQL语句中别名的使用之字段名别名

    别名主要使我们得到的查询结果更容易理解和阅读,关于别名的使用,我们还是先看个例子吧,如下图是一份简易的销售表: 现在假如我们想要查询每个员工的总销售额,我们可以建立如下的SQL查询: 运行一下得到如下 ...

  • 【Access】SQL语句中别名的使用之表名别名

    大家好,上次课我们学习了SQL语句中别名的使用之字段名别名的用法,今天我们学习SQL语句中别名的使用之表名别名,顾名思义,表名别名就是给表取一个别名,那么你会问有什么用呢,瞎折腾吗?肯定不是啦,我们看 ...

  • 【Access】SQL语句中自然连接的使用

    大家好,上次课程我们讲了等值连接,本节课跟随小编来学习一下自然连接.自然连接是按照公共属性值相等的条件进行连接,是一种特殊的等值连接,公共属性值不相等的行会被删除,同时在结果中消除重复的属性列. 我们 ...

  • 【Access】SQL语句中内连接的使用

    大家好,上次课程我们讲了自然连接的使用,本节课再跟随小编来学习一下内连接.内连接的效果和等值连接是一样的,只不过在Access数据库中的操作不一样罢了,这里先放上内连接的SQL语法格式: SELECT ...

  • 【Access】SQL语句中全外连接的使用

    大家好,上次Access课程我们讲了右(外)连接使用,本节课再跟随小编来学习一下全外连接.全外连接是在两表进行自然连接,只把左表和右表要舍弃的都保留在结果集中,相对应的列上填NULL.全外连接的语法格 ...

  • SQL 语句中 where 条件后 写上1=1 是什么意思

    在编程过程中,经常会在代码中使用到"where 1=1",这是为什么呢? SQL注入 初次看到这种写法的同学肯定很纳闷,加不加where 1=1,查询不都一样吗?例如: selec ...