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
类型如果这样判断也会有这个问题
最后
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。