记录一次mybatis项目中传入查询条件无效的问题
正常的开发中,sql执行逻辑很简单,使用if test判断,如果传的参数有对应的test字段,则将其加入到判断条件中根据传递的查询条件来过滤数据,如下:
<if test="page.meta.level != null and page.meta.level != '' or 0 == page.meta.level">
AND a.level = #{page.meta.level}
</if>
这条是判断该字段值如果不为null或者不等于’ ',就进行该sql 字段条件拼接。
但是测试过程中,发现当level = 0时,会被过滤掉,于是我再做个测试,我将level值改为1或别的值(除0外),sql就能成功拼接该字段。
解决方案
在if里添加 “or 0 == page.meta.level” 或者去掉 “and page.meta.level != ‘’”这条非空判断
<if test="page.meta.level != null and page.meta.level != '' or 0 == page.meta.level">
AND a.level = #{page.meta.level}
</if>
最后结果返回条数就是正确的,大功告成