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;     //公司名称
相关推荐
几何心凉2 小时前
openGauss:多核时代企业级数据库的性能与高可用新标杆
前端·数据库·数据库开发
AiXed4 小时前
PC微信协议之AES-192-GCM算法
前端·数据库·python
AllData公司负责人4 小时前
实时开发平台(Streampark)--Flink SQL功能演示
大数据·前端·架构·flink·开源
小满zs4 小时前
Next.js第五章(动态路由)
前端
清沫4 小时前
VSCode debugger 调试指南
前端·javascript·visual studio code
一颗宁檬不酸5 小时前
页面布局练习
前端·html·页面布局
q***92515 小时前
Spring Cloud Data Flow 简介
后端·spring·spring cloud
m0_639817156 小时前
基于springboot火锅店管理系统【带源码和文档】
java·spring boot·后端
金木讲编程6 小时前
Claude、Agent与Copilot协作生成Angular应用
前端·ai编程
振华OPPO6 小时前
Vue:“onMounted“ is defined but never used no-unused-vars
前端·javascript·css·vue.js·前端框架