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;     //公司名称
相关推荐
剑神一笑1 分钟前
CSS Loading 动画生成器
前端·css
神三元8 分钟前
最近半年,我做了个 AI-Native 的 Agent 从零到进阶教程
前端·javascript·面试
神奇小汤圆20 分钟前
Spring Bean 的生命周期
后端
XiYang-DING22 分钟前
jQuery
前端·javascript·jquery
Morwit22 分钟前
【力扣hot100】 221. 最大正方形
前端·算法·leetcode
明月_清风33 分钟前
关于node 模块化的现状与未来
前端·node.js
神奇小汤圆39 分钟前
我研读了 500 个 Spring Boot 生产级代码库,90% 都犯了这 7 个致命错误
后端
空中海39 分钟前
03 MyBatis Spring Boot 集成、事务、测试与工程化体系
spring boot·后端·mybatis
老王以为41 分钟前
从源码到架构:React useActionState 深度剖析
前端·javascript·react.js
ElonMuscle42 分钟前
GO环境速建笔记
后端