我是靠谱客的博主 如意麦片,最近开发中收集的这篇文章主要介绍解决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的查询条件失效问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部