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;     //公司名称
相关推荐
老华带你飞2 分钟前
列车售票|基于springboot 列车售票系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring
幸运小圣11 分钟前
深入理解ref、reactive【Vue3工程级指南】
前端·javascript·vue.js
用户479492835691513 分钟前
面试官最爱挖的坑:用户 Token 到底该存哪?
前端·javascript·面试
Irene199117 分钟前
Web前端开发中的垃圾回收详解
前端
Heo26 分钟前
Vue3.4中diff算法核心梳理
前端·javascript·面试
青韵28 分钟前
Claude 高级工具使用解析:从上下文优化到程序化调用的工程实践
后端
惜.己29 分钟前
前端笔记(二)
前端·笔记
O***p60429 分钟前
前端的“复杂性红线”:如何在超大型应用时代构建可持续演进的前端架构?
前端·架构
汝生淮南吾在北29 分钟前
SpringBoot+Vue在线考试系统
vue.js·spring boot·后端·毕业设计·毕设
树獭叔叔30 分钟前
Langgraph: Human-in-the-Loop 实现机制
后端·langchain·aigc