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,能够正常入库了

相关推荐
一笑的小酒馆15 分钟前
Androidiot蓝牙配网简单封装
android
愚公搬代码3 小时前
【愚公系列】《Android应用案例开发大全》016-LBS类应用掌上杭州(辅助工具类的开发)
android·前端
g10565591394 小时前
LAMP博客平台Wordpress实战
android·mysql·nginx·php
hunterandroid5 小时前
[Android 从零到一] Compose LazyColumn 性能优化:key、稳定性与重组治理
android·前端
pengyu5 小时前
【Kotlin 协程修仙录 · 元婴境 · 中阶】 | 操作符真解:Flow 中间操作符与数据流变幻术
android·kotlin
pengyu6 小时前
【Kotlin 协程修仙录 · 元婴境 · 初阶】 | 冷流初啼:Flow 的基础与响应式编程的入门
android·kotlin
wawo007 小时前
Kuikly实践-从Android compose迁移到kuikly compose
android
Carson带你学Android8 小时前
Android 版 MCP 正式登场:AppFunctions
android·ai编程·jetbrains
古法安卓11 小时前
Android-Direct Boot 阶段与 getFilesDir() 路径变更问题深度分析
android·java·android studio
阿巴斯甜11 小时前
Android Studio Detekt 使用
android