当我们在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中判断集合是否为空
发布评论