Integer和int踩过的坑

在做SSM项目时发现一个有趣的bug,在这里记录一下。

数据库表如下:

实体类:grade字段初始设定为int类型

在用mybatis对第三条数据进行修改时,希望赋值的更改,未赋值的不更改,测试运行

修改后发现数据库中的grade字段变成了0,这不是我想要的,(按照正常需求应该是原来的数字5)

查看了一下日志,发现了猫腻:

int 类型,在默认情况下不赋值为0,执行到mybatis的更新语句时,被当做数字0,而非null,

仔细想想Integer和int 的区别,integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,

我又把之前实体类中的grade 类型改为了Integer成功实现了自己想要的。

总结:在实体类中尽量使用Integer修饰,Integer可以区分出未赋值和值为0的区别,我们大部分做判断都是以“”null“”去判断的,特在此做个笔记。

原文地址:https://www.cnblogs.com/ly-520/p/11241080.html

时间: 2024-10-18 02:41:52

Integer和int踩过的坑的相关文章

【转载】Fragment 全解析(1):那些年踩过的坑

http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使用姿势3.Fragment之我的解决方案:Fragmentation 本篇主要介绍一些最常见的Fragment的坑以及官方Fragment库的那些自身的BUG,这些BUG在你深度使用时会遇到,比如Fragment嵌套时或者单Activity+多Fragment架构时遇到的坑.如果想看较为实用的技巧,

Fragment全解析系列(一):那些年踩过的坑

Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使用姿势3.Fragment之我的解决方案:Fragmentation 本篇主要介绍一些最常见的Fragment的坑以及官方Fragment库的那些自身的BUG,这些BUG在你深度使用时会遇到,比如Fragment嵌套时或者单Activity+多Fragment架构时遇到的坑.如果想看较为实用的技巧,请直接看第二篇 Fragment是可以让你的app纵享丝滑的设计,如果你的a

《C++之那些年踩过的坑(附录一)》

C++之那些年踩过的坑(附录一) 作者:刘俊延(Alinshans) 本系列文章针对我在写C++代码的过程中,尤其是做自己的项目时,踩过的各种坑.以此作为给自己的警惕. [版权声明]转载请注明原文来自:http://www.cnblogs.com/GodA/p/6639526.html 本来上个月就开始动笔了,直到现在才发出来,实在太多事情.可能有些小朋友不知道写这一篇随笔的起因,那么你可以看一下我之前写的. 上一篇的最后,我提到了一个问题:代码优化.并留了一个小测试:无符号数与有符号数的性能比

我用select做多路复用踩到的坑

既然说是用select踩到的坑,那么就先直接贴一段使用select的代码上来瞅一下: bool SocketAction(int fd, const char* buf, size_t len, uint64_t milli_expire) { struct timeval tv; tv.tv_sec = milli_expire / 1000; tv.tv_usec = (milli_expire % 1000) * 1000; fd_set rd_set, wt_set; FD_ZERO(&

游戏服务器数据库踩过的坑

在页游服务器这块很早之前一直没有认真考虑过,大部分是之前搭建好的,我只需要按照他原来的设计继续码代码就好了. 可是这次服务器重构的过程中,还是遇到了很多始料不及的问题.那么就按照踩过的坑,去一个个讲讲分析分析. 1:起初mysql的方案  起初的设计方案是这样,用一个RolePlayer 去做玩家数据的缓存,所有玩家的数据更新到RolePlayer中,定时十秒中更新到数据库.RolePlayer大概是这样一个设计 class RolePlayer { public int roleId; pub

踩过无数坑实现的哈夫曼压缩(JAVA)

最近可能又是闲着没事干了,就想做点东西,想着还没用JAVA弄过数据结构,之前搞过算法,就试着写写哈夫曼压缩了. 本以为半天就能写出来,结果,踩了无数坑,花了整整两天时间!!orz...不过这次踩坑,算是又了解了不少东西,更觉得在开发中学习是最快的了. 话不多说,进入正题 首先先来讲讲哈夫曼树 哈夫曼树属于二叉树,即树的结点最多拥有2个孩子结点.若该二叉树带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长度最短的树,权值较大的结点离根

Java进阶(三十四)Integer与int的种种比较你知道多少?

Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱.所以我对它们进行了总结,希望对大家有帮助. 首先看代码: package

初学spring boot踩过的坑

一.搭建spring boot环境 maven工程 pom文件内容 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-

Java包装类,以及Integer与int之间的比较

一.Java的基本类型 Java语言中提供了八种基本类型,包括六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. 整数型,包括byte.short.int.long,默认初始值是0: 浮点型,包括float.double,默认初始值是0.0: 字符型,char型,默认值是'',注意跟""的区别,''是字符的引号,""是字符串的引号,两者不同. 布尔型,boolean,默认初始值是false. 注意:如果不初始化一个char类型的变量,将它输出在c