本文主要是介绍Mybatis - 在If标签中非空判断数字0时不正确的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、问题
1、通常在对一个字段做非空判断时采取的方式如下,执行结果是符合预期的
<if test="name != null and name != ''">AND name = #{name}
</if>
2、但是当这个字段的类型为数字且值为0时,会发现语句没有连接,判断失败
<if test="status != null and status != ''">AND status = #{status}
</if>
二、说明
当 一个数值 和 一个字符 进行比较时,都会被转成 Double 类型再进行比较
// 字符串转换为 Double 的逻辑
return s.length() == 0 ? 0.0D : Double.parseDouble(s);
此时 0 和 '' 都变成 0.0 了,所以 0 != '' 的结果为 false 的,因为它们是相等的
三、方案
<if test="status != null">AND status = #{status}
</if>
这篇关于Mybatis - 在If标签中非空判断数字0时不正确的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!