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;     //公司名称
相关推荐
发现一只大呆瓜14 小时前
深度解密 Rollup 插件开发:核心钩子函数全生命周期图鉴
前端·vite
我学上瘾了14 小时前
Spring Cloud的前世今生
后端·spring·spring cloud
java_nn15 小时前
一文了解前端技术
前端
发现一只大呆瓜15 小时前
深度解析 Rollup 配置与 Vite 生产构建流程
前端·vite
波波00715 小时前
ASP.NET Core 健康检查实战:不只是一个 /health 接口
后端·asp.net
小码哥_常15 小时前
Spring Boot 搭建邮件发送系统:开启你的邮件自动化之旅
后端
小码哥_常15 小时前
安卓黑科技:让手机成为你的“跌倒保镖”
前端
小李子呢021116 小时前
前端八股Vue---Vue2和Vue3的区别,set up的用法
前端·javascript·vue.js
m0_6470579616 小时前
Harness Engineering 实践指南
前端
石榴树下的七彩鱼16 小时前
图片修复 API 接入实战:网站如何自动去除图片水印(Python / PHP / C# 示例)
图像处理·后端·python·c#·php·api·图片去水印