mybatis中BigDecimal中的0存为null的坑及解决
更新时间:2024年10月28日 09:05:27 作者: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 类型如果这样判断也会有这个问题
最后
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java操作mongodb之多表联查的实现($lookup)
这篇文章主要介绍了java操作mongodb之多表联查的实现($lookup),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-03-03
PowerJob的DesignateServer工作流程源码解读
这篇文章主要介绍了PowerJob的DesignateServer工作流程源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2024-01-01


最新评论