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;     //公司名称
相关推荐
Hilaku6 分钟前
技术好就能升职是前端圈最大的谎言!
前端·javascript·程序员
卷无止境7 分钟前
FastAPI 的可观测性进化,从打日志到看清整个系统的呼吸
后端·python·fastapi
lhldsg8 分钟前
树洞倾诉的核心需求与产品定位误区
java·前端·小程序
光影少年20 分钟前
react navite高频手写/实操题
前端·javascript·react native·react.js·前端框架
MetaLite21 分钟前
SpringBoot防重复提交-加一把Redis锁就够吗
spring boot·redis·后端
卷无止境25 分钟前
FastAPI 的 CI/CD 之路,从代码提交到线上运行
后端·python·fastapi
计算机毕设定制辅导-无忧学长29 分钟前
《基于SpringBoot的图书管理系统设计与实现》
java·spring boot·后端
小蒜学长30 分钟前
借助于大模型工具Cursor的中药材交易系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
hunterandroid33 分钟前
HarmonyOS 弱网与离线优先架构实战:请求队列、本地缓存与增量同步
前端·前端框架
lhldsg38 分钟前
宠物同城领养平台开发实战:从需求分析到上线部署指南
java·前端·小程序·需求分析·宠物