当我们在xml文件中用foreach遍历集合的时候 并且发现需要判断条件如果前端不传值{拼接参数且不传值}的情况下就是查询所有的数据,我们就不能和之前一样写判断条件了,就需要简单更正一下。

错误代码如下:

<if test="reliability != null and reliability  != ''" >
                and reliability in
     <foreach collection="reliability" item="rel"  open="(" separator="," close=")">
                    #{rel}
     </foreach>
</if>

报错如下:

 表面看着是没有什么问题,判断传过来的是不是空,是不是null,但是当你传参数但是不传值得候,发现还是能进来,if判断没有起作用,那这就问题来了。

解决方案:

        直接把!=''替换成reliability.size>0即可!!!!!!!

 <if test="reliability != null and reliability.size>0" >
                and reliability in
       <foreach collection="reliability" item="rel"  open="(" separator="," close=")">
               #{rel}
       </foreach>
 </if>

理由:因为现在我们传过来的不是String,而是集合,你需要判断集合的长度,如果集合长度大于0,那也就是集合里面传值了,反之,则没传 那就让他查全部即可。

希望对你们有帮助!!!点个赞呗!!!

更多推荐

mybatis.xml中判断集合是否为空