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

背景:

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

问题:

由于后台配置存量其他类型的数据无需该字段,也不想动存量,所以该字段传给后台为null,insert操作后,mysql表中该字段为null,但是期望为0

所以代码中对该字段进行处理,判断XX字段为null,则手动赋值0,否则取后台配置的值。

java 复制代码
//特殊处理代码
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,试试看,如下

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

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

相关推荐
white-persist19 分钟前
【burp手机真机抓包】Burp Suite 在真机(Android and IOS)抓包手机APP + 微信小程序详细教程
android·前端·ios·智能手机·微信小程序·小程序·原型模式
安卓AndroidQ1 小时前
Android Studio 代码混淆核心解释
android·ide·android studio
qq_7391753691 小时前
Android Studio 实现四则运算+开方+倒数简易计算器
android·python·android studio
就叫飞六吧1 小时前
Android studio -kt构建一个app
android·ide·android studio
ss2732 小时前
手写MyBatis第85弹:组合模式在SqlNode设计中的精妙应用
mybatis
sniper_fandc2 小时前
MybatisPlus和pagehelper分页冲突—关于jsqlparser、pagehelper、MybatisPlus三者的版本兼容问题
mybatis·mybatisplus
qluka3 小时前
Android 窗口结构(三) Home Task 添加Home ActivityRecord
android·开发语言
灿烂阳光g3 小时前
App进程是如何从Zygote中fork出来的
android
谢语花3 小时前
【VS2022】LNK assimp64.lib找不到文件_openframework
android·运维·服务器
model20053 小时前
Android 配置多个 cmake
android