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;     //公司名称
相关推荐
Swift社区21 分钟前
React 项目生产环境构建与静态资源优化
前端·react.js·前端框架
bepeater123426 分钟前
使用Kubernetes部署Spring Boot项目
spring boot·容器·kubernetes
A小码哥33 分钟前
基于 Trae + 国产 GLM-4.7模型的任务驱动式软件开发实践
前端
上海合宙LuatOS34 分钟前
LuatOS核心库API——【fft 】 快速傅里叶变换
java·前端·人工智能·单片机·嵌入式硬件·物联网·机器学习
瑶瑶领先_34 分钟前
react - isValidElement 判断参数是否是一个有效的ReactElement
前端
瑶瑶领先_40 分钟前
js 数字精确度
前端
瑶瑶领先_43 分钟前
图片标签拖拽 && url、base64、Blob、File、canvas之间相互转换
前端
大魔王7191 小时前
进程线程和协程三
后端
爱敲代码的小鱼1 小时前
web后端开发SpringBootWeb的入门:
java·spring boot·spring
感性的程序员小王1 小时前
我做了个 AI + 实时协作 的 draw.io,免费开源!!
前端·后端