欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Mybatis之Integer类型字段为0,入库为null

Mybatis之Integer类型字段为0,入库为null

2025/11/10 2:16:25 来源:https://blog.csdn.net/chenwq726/article/details/115870643  浏览:    关键词:Mybatis之Integer类型字段为0,入库为null

背景:
由于项目某个功能用到优先级字段来判断,需要在mysql表中定义一个字段XX,类型为int,默认为0,具体值由后台配置,正常入库即可

问题:
由于后台配置存量其他类型的数据无需该字段,也不想动存量,所以该字段传给后台为null,insert操作后,mysql表中该字段为null,但是期望为0
所以代码中对该字段进行处理,判断XX字段为null,则手动赋值0,否则取后台配置的值。

//特殊处理代码
InfoDO.setXx(request.getXX() == null ? 0 : request.getXX());

正常情况下是可以解决问题,但发现还是解决不了问题,虽然手动赋值0,但落DB还是null

解决:
起初以为是Mybatis的一个坑,Integer类型,如果值为0,落DB都是为null的(以为0都会被mybatis框架转换为null),那这样就莫名其妙了。各种百度,依旧没有找到解决办法
尝试着从后台给该字段传一个0,发现能够正常入库,DB显示的是0,所以还是可以传0的
觉得挺奇怪的,手动赋值0 和 后台传的0有什么区别?后来想着后台传过来的0,经过反序列化后是一个Integer对象,而手动赋值的是一个基本数据类型,那手动赋值就给它new一个对象Integer,试试看,如下

//特殊处理代码
InfoDO.setXx(request.getXX() == null ? new Integer(0) : request.getXX());

这样处理后,发现如果后台XX字段传null,特殊处理赋值0,能够正常入库了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词