如何让参数为0也能进入if标签的方法中?
1、问题
mybatis中的自己写的判断方法,若参数buildingType=0
,则不会进入到方法中
<if test="searchForm.buildingType != null and searchForm.buildingType !=''">
and a.building_type=#{searchForm.buildingType}
</if>
2、原因
mybatis源码如下所示:
return s.length() == 0 ? 0.0D : Double.parseDouble(s);
代码解释:
这是一个将字符串转换为 double 类型的操作。代码中使用了三元运算符 ?: 来判断字符串的长度是否为 0。如果字符串为空,则返回 0.0D(double 类型的零值),否则使用 Double.parseDouble() 方法将字符串转换为 double 类型。这段代码的作用是将一个字符串转换为 double 类型的数值,若buildingType=0
,则结果为0.0
重点:
Mybatis 在判断整数0.0的时候会把默认为 ’ ’ ,所以判断 !=’ '的条件为false 不会进去判断条件
3、怎么解决这个问题?
1. 错误方法的方法
<if test="searchForm.buildingType != null and searchForm.buildingType !=''">
and a.building_type=#{searchForm.buildingType}
</if>
buildingType=0
不会进入该方法
2.不推荐的方法
<if test="searchForm.buildingType != null and searchForm.buildingType ==''">
and a.building_type=#{searchForm.buildingType}
</if>
虽然这样
buildingType=0
的时候可以进入方法,但是当buildingType=''
的时候也可以进入这个方法,造成查询出的数据不正确,故不推荐这样写
3.正确方法
文章来源:https://www.toymoban.com/news/detail-611518.html
<if test="(searchForm.buildingType != null and searchForm.buildingType !='') or searchForm.buildingType==0.0">
and b.building_type=#{searchForm.buildingType}
</if>
参数
buildingType=0
、buildingType=1
、buildingType=2 ...
,都能进入该方法,buildingType=''
空字符串的时候不能进入该方法文章来源地址https://www.toymoban.com/news/detail-611518.html
到了这里,关于「问题」如何解决 MyBatis 中的 if 标签无法识别参数为 0 的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!