五一假期也要记录一笔,使用Springboot jpa 在Java实体类上映射MySql无符号BigInt的正确数据类型是什么

12 篇文章 1 订阅

业务需求:

产品库存或者一些保证原子性的操作,乐观锁是一个比较经典的方式,那么我们要考量一个很关键的因素,那就是这个版本号的长度的问题

从而引申出以下问题:

既然是mysql,那么就有必要去官方文档提取一些对我们设计这个字段有用的信息

如下紫色字体

Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

整数类型又称数值型

一起来重温下面基础知识吧

类型 有符号型取值范围无符号型取值范围
TINYINT  -128〜127   0 〜255
SMALLINT-32768〜327670〜65535
MEDIUMINT  -8388608〜83886070〜16777215
INT (INTEGER) -2147483648〜2147483647 0〜4294967295
BIGINT  -9223372036854775808〜92233720368547758070〜18446744073709551615

还有以下关系

类型说明存储大小
TINYINT很小的整数 1个字节
SMALLINT  小的整数2个宇节
MEDIUMINT中等大小的整数3个字节
INT (INTEGHR)普通大小的整数 4个字节
BIGINT 大整数 8个字节

由于我目前正在设计我自己的项目字段,所以我选择以下方式作为我的具体业务处理案例讲解

添加方式:这里的默认值设置为0即可哈

1、在navicat 中执行如下,即可加入无符号整型

ALTER TABLE `mall_space`.`product` 
ADD COLUMN `VERSION` smallint UNSIGNED NULL;

2、navicat 中如下勾选对应选项也可以的

java 实体类中如下

 好,执行代码看看效果怎么样

 好的报错了啊喂

我查看下sql

 sql是这么写的

 

注意了:因为我的版本号在java代码中进行+的操作,所以要注意java  long的相加会自动转换的问题,需要将newVersion = oldVersion+1L这样处理

改改吧!粗心大意在所难免,外面隔壁那栋楼正在改装公寓,装修声音太大的缘故啊哈哈哈

好的继续 ~~~~~~~结果如下

如有不足请指正

如果喜欢请点赞

如有帮助请收藏

如有疑问请留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值