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;     //公司名称
相关推荐
转转技术团队3 小时前
VDOM 编年史
前端·设计模式·前端框架
蓝瑟忧伤3 小时前
前端性能体系的全面升级:现代 Web 如何构建可量化、可治理、可演进的性能架构?
前端·架构
申阳3 小时前
Day 17:03. 基于 Tauri 2.0 开发后台管理系统-登录页面开发
前端·后端·程序员
诸葛亮的芭蕉扇3 小时前
tree组件点击节点间隙的异常问题分析
前端·javascript·vue.js
疯狂的程序猴4 小时前
Transporter 在 iOS 上架流程中的角色变化 本地上传工具的定位、局限与多工具协作趋势分析
后端
N***H4864 小时前
使用Springboot实现MQTT通信
java·spring boot·后端
白气急4 小时前
别用“设计感”掩盖无知:从一次 null == 0 的事故说起
后端
GinoWi4 小时前
HTML基本格式 - 第一个HTML网页
前端
顶鲜花的牛粪4 小时前
Astro 项目升级全栈:EdgeOne Pages 部署指南
前端
疏狂难除4 小时前
随便玩玩lldb (二)
开发语言·后端·rust