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;     //公司名称
相关推荐
q***42827 分钟前
SpringBoot Maven快速上手
spring boot·后端·maven
谢尔登13 分钟前
defineProperty如何弥补数组响应式不足的缺陷
前端·javascript·vue.js
Victor35619 分钟前
Redis(153)Redis的网络使用如何监控?
后端
码一行22 分钟前
Eino AI 实战:解析 PDF 文件 & 实现 MCP Server
后端·go
Victor35631 分钟前
Redis(152) Redis的CPU使用如何监控?
后端
蓝瑟忧伤35 分钟前
前端技术新十年:从工程体系到智能化开发的全景演进
前端
P***843939 分钟前
解决Spring Boot中Druid连接池“discard long time none received connection“警告
spring boot·后端·oracle
雨中散步撒哈拉43 分钟前
17、做中学 | 初三下期 Golang文件操作
开发语言·后端·golang
倚肆1 小时前
Spring Boot CORS 配置详解:CorsConfigurationSource 全面指南
java·spring boot·后端
databook1 小时前
告别盲人摸象,数据分析的抽样方法总结
后端·python·数据分析