【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;
生活随笔
收集整理的这篇文章主要介绍了
【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类型字段中,变成了空;的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: mysql数据库有string_mysq
- 下一篇: 数据库date日期转String类型