概述
记录一次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>
最后结果返回条数就是正确的,大功告成
最后
以上就是如意麦片为你收集整理的解决mybatis传入Integer类型时值为0的查询条件失效问题的全部内容,希望文章能够帮你解决解决mybatis传入Integer类型时值为0的查询条件失效问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复