MySQL字段设置默认数值,但是插入后不是设置的数值而是0

开发者分享在二次开发中遇到的基础问题:本地项目插入数据c_report_count默认为0,揭示了JAVA新手常犯的int类型默认值误解。通过调整为Integer类型并设置默认值解决,引发对代码版本差异的反思。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天工作任务是一个需要二次开发的项目,好吧,到底多少次了我也不知道,直接拉下来开干就完事了!需求是个简单的对一个插入数据的功能进行二次开发,按照需求修改部分地方即可。

        但是遇到个很基础的问题,也失露出我JAVA基础拉稀的事实(细小字体大家应该看不见)

    

但是我发现我改完后测试就出现了问题!

我插入的数据!统计用的c_report_count 字段是 0  !

而用线上版本的插入却是 1 !

我第一时间想到数据库的表字段设置问题,线上版本插入保存的1 ,而我本地插入保存的是0 ,这显然不会是表问题,但是我还是打开检查了一遍!

 没有问题!设置的默认:1 

我当时脑子一片空白,但是想了想后,一定是插入的时候在哪set了0吧!

这里就不放代码了,因为根本没有set这个字段。。。

那为什么我这插入就是 0 呢?

一番无脑看 新闻摸鱼 蹲大厕 打水 泡茶 拿零食后

打开实体类检查,终于找到了这个问题的源头!

啊!~  是刻在DNA里的int默认值是 0 !

 

将类型改成Integer 后重启项目再次测试插入后c_report_count 就是 1 了!

 

没错!int的默认值是0 ,如果这个字段没有set值进去那么默认就是0 ,所以插入到数据库里的数据的字段是 0 ,而Integer 的默认值是null 也就是说,插入到数据库后mysql发现你的这个字段没有值,那么就会输入上你设置的默认值!(前提是你要给该字段设置默认值

        但是我感觉这里问题主要还是拉取下来的版本问题,可能线上发布的版本还握在某位同事手里。。。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值