java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > mybatis中BigDecimal的0存为null的坑

mybatis中BigDecimal中的0存为null的坑及解决

作者:yuyue_999

在使用MyBatis进行数据库操作时,若Java中属性类型为BigDecimal且值为0,插入数据库时可能会变为null,而不是0,这个问题可能是由于MyBatis在处理BigDecimal类型时的弱类型判断导致的,当BigDecimal变量与空字符串进行比较时,MyBatis可能将其视为null

mybatis中BigDecimal的0存为null的坑

问题点

做mybatis的插入和修改操作时,java中类型为Bigdicemal时,且值为0时,存入到数据库中的值为null,而不是0,其它的非0值正常

部分代码如下:

有问题的属性

可以看到是 Begdecimal 类型,对应查出来的日志如下:

可以看到,插入时存的是0, 但是入口后进行查询变成了null

最终修改方法

把 去掉bigDecimalNum !=''后正常

经过查询得出结论

mybatis中的类型判断是弱类型,而不是java中的强类型。

mybatis会自动把BigDecimal类型转为string,即0变为null啦

同样的,Integer 类型如果这样判断也会有这个问题

最后

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文