我是靠谱客的博主 如意麦片,这篇文章主要介绍解决mybatis传入Integer类型时值为0的查询条件失效问题,现在分享给大家,希望可以做个参考。

记录一次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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部