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

一、问题

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

二、分析

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




三、解决

将如下判断条件:




改为:




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

欢迎关注我的微信公众号:【幕桥社区】
【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;_第1张图片

你可能感兴趣的:(【报错】,【Mybatis】)