欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;

发布时间:2023/12/15 数据库 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空; 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、问题

Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;

二、分析

自己写了一个自动写代码的脚本,带入springBatch后,读取文件时,少了序列号0-9的记录(10笔一提交),其他遇到包含序列号为0的也都出现一样的问题,慢慢缩小问题源,发现是这个String类型的0存入number类型的数据库导致;报错报的也是无法将null插入数据库;通过debug发现,读取完记录,映射成实体类后,实体类中的序列号是有值的(字符串0);后来发现,最大可能就是在Mybatis中,怀疑是插入SQL的字段条件判断;

<if test="id != null and id != '' "></if>

三、解决

将如下判断条件:

<if test="id != null and id != '' "></if>

改为:

<if test="id != null "></if>

即可;因为实体类中是文件里是String类型,映射到实体类中的属性是BigDecimal类型,数据库中是number类型,因为BigDecimal是不可能为【空字符串】的,所以,这里应该是Mybatis帮我们把这里的字符串非空,转换成BigDecimal的非BigDecimal.Zero,即BigDecimal类型的0了;

欢迎关注我的微信公众号:【幕桥社区】

总结

以上是生活随笔为你收集整理的【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。