mybatis判断不了空字符问题,mybatis判断字段是否为空

  mybatis判断不了空字符问题,mybatis判断字段是否为空

  

目录

Mybatis判断空串,先说正确的使用方法。还有一个题外话。Mybatis判断它是空的。注意startBalancejava是BigDecimal类型。

 

  00-1010如果使用正确,先说结论:不会引起任何问题。大家的疑惑都是使用不当造成的。

  

Mybatis判断空字符串

一般判空的方式就是:

 

  对非字符串类型使用obj!=null就可以了。

  字符串类型通常需要通过添加空字符串obj来判断!=null和obj!= ,如果参数类型对应的判断方法使用正确,就不会有问题。

  但是有很多不认真做事的人,会把这两个反过来用。虽然没有报告错误,但这不是预期的逻辑。错误使用的一个例子就是参数是数值型的,比如Long,但是判断空格的时候用了obj!=null和obj!=“”,这种做法本身就是错误的。你会发现当Long值通过0时,obj!= 成立,这导致了完全意想不到的结果。其中,mybatis的处理方式是,当它发现你将一个字符串与一个数值类型的对象进行比较时,它会将该字符串转换为数值类型。当字符串不为空时,没有问题。当字符串为空时,mybatis将空字符串转换为数字0。这是mybatis做的实现,没有漏洞。问题的根源是将空字符串判断为非字符串类型的错误操作。最后的结论是,对于数值型对象,不要用空字符串来判断表达式obj!=。

  00-1010两个系统交互时,数据在网络中传输时没有类型,只有到达末端时才会进行类型识别。我们平时和前端交互,数据在传输过程中是字符串,也就是不存在null这种东西。所以接收时后端指定的类型很重要。需要注意的是,后端定义字符串类型的时候,不会有null(除非前端不传递这个参数),只有空字符串,所以需要知道字符串的类型。

  

先说正确的使用方式

 

  00-1010这样写,startBalance!= 会返回false,所以对象无法判断!= ;

  普通字符串也可以…

  以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: