关于java使用xml手写sql时判断空串

判断参数:

String a = "";
判断条件:

<if test="a==''">
   a
</if>
<if test="a==0">
   a1
</if>
<if test="a=='0'">
   a2
</if>
<if test="a==null">
   a3
</if>
<if test='a=="0"'>
   a4
</if>
输出结果:a,a1

判断参数:
 String b = "0";
判断条件:
<if test="b==''">
   b
</if>
<if test="b==0">
   b1
</if>
<if test= "b == '0'">
   b2
</if>
<if test="b == null">
   b3
</if>
<if test='b =="0"'>
   b4
</if>
输出结果:b1,b4
判断参数:
String c = " ";
判断条件
<if test="c==''">
   c
</if>
<if test="c==0">
   c1
</if>
<if test="c == '0'">
   c2
</if>
<if test="c==null">
   c3
</if>
<if test='c=="0"'>
   c4
</if>

输出结果:c1

 结果得知,无论传入的参数是'','0',' ',都会等于0。

这是个大坑!请教哪里能查到这个场景出现的原因!

https://wenku.baidu.com/view/21edcbc1514de518964bcf84b9d528ea81c72f0a.html

找到了能解惑我的博客,是空串时比较的源码。

在判断比较对象为数字的时候,传入参数会转换成数字,空串默认转换为0,所以空串判断==0会成立。可以改成空串=='0'就不成立了

但是!又有一个新需求,他可能为空串,可能为0。我需要他等于0的时候进入sql
那么0=='0'此时又不成立了,'0'按我的理解是字符串,我传进来的字符串0按理说应该相等,在线等解惑


解决方案:

'a!=null and a != "" and a == "0" ' 

"a!=null and a != '' and a == 0 "

"a!=null  and a == '0'.toString() "

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值