SpringBoot雪花算法主键ID传到前端后精度丢失问题的解决

Java后端Long类型的范围

-263~263,即:-9223372036854775808~9223372036854775807,它是19位的。

这个数字可以通过方法获得:Long.MAX_VALUE、Long_MIN_VALUE。

前端JS的数字类型的范围

-253~253,即:-9007199254740991~9007199254740991,它是16位的。

这个数字可以通过方法获得:Number.MAX_SAFE_INTEGER、Number.MIN_SAFE_INTEGER。

结论

可见,Java后端的Long宽度大于前端的。雪花算法一般会生成18位或者19位宽度的数字,那么这时就会出问题。

解决方法

实体类entity增加@JsonSerialize注解

java 复制代码
@Data
@TableName("tb_course_base")
public class Course {
    //序列化时,不采用long类型,而采用string类型,防止雪花精度丢失问题
    @JsonSerialize(using= ToStringSerializer.class)
    @TableId(type = IdType.ASSIGN_ID)   //主键生成策略,雪花
    private Long id;
    private Long companyId;         //公司编号
    private String companyName;     //公司名称
相关推荐
NineData1 分钟前
NineData 新增支持 GaussDB 到 StarRocks 实时数据复制能力
后端
zhensherlock4 分钟前
Protocol Launcher 系列:Trello 看板管理的协议自动化
前端·javascript·typescript·node.js·自动化·github·js
zhuà!7 分钟前
element的el-form提交校验没反应问题
前端·elementui
龙猫里的小梅啊23 分钟前
CSS(一)CSS基础语法与样式引入
前端·css
小码哥_常24 分钟前
从0到1,开启Android音视频开发之旅
前端
sghuter25 分钟前
数字资源分发架构解密
后端·架构·dubbo
渔舟小调27 分钟前
P19 | 前端加密通信层 pikachuNetwork.js 完整实现
开发语言·前端·javascript
小码哥_常33 分钟前
Spring Boot启动慢?这5个优化点带你起飞
后端
NineData1 小时前
NineData将亮相DACon 2026上海站!解锁AGI时代数据“智理”新范式
数据库·后端·架构
qq_12084093711 小时前
Three.js 工程向:Draw Call 预算治理与渲染批处理实践
前端·javascript