【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了;

欢迎关注我的微信公众号:【幕桥社区】
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值