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;     //公司名称
相关推荐
u***u68532 分钟前
React环境
前端·react.js·前端框架
X***E46332 分钟前
前端数据分析应用
前端·数据挖掘·数据分析
4***149035 分钟前
React社区
前端·react.js·前端框架
LFly_ice37 分钟前
学习React-24-路由传参
前端·学习·react.js
Lhuu(重开版2 小时前
CSS:动效布局动画
前端·css
Q***K552 小时前
前端构建工具
前端
laocooon5238578862 小时前
创建了一个带悬停效果的“我的个人主页“按钮
前端
2013编程爱好者3 小时前
Vue工程结构分析
前端·javascript·vue.js·typescript·前端框架
小满zs4 小时前
Next.js第十一章(渲染基础概念)
前端
我叫张小白。4 小时前
Spring Boot拦截器详解:实现统一的JWT认证
java·spring boot·web·jwt·拦截器·interceptor