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 分钟前
如果要设计一个开源的Code EditorSDK,你会向开发者暴露哪些API?
前端
superman超哥10 分钟前
Rust 日志级别与结构化日志:生产级可观测性实践
开发语言·后端·rust·可观测性·rust日志级别·rust结构化日志
每天早点睡10 分钟前
continue语句
后端
每天早点睡11 分钟前
while语句
后端
风象南12 分钟前
Spring Boot 配置 diff 实战
后端
Access开发易登软件14 分钟前
Access 数据可视化:如何制作箱形图
前端·数据库·vba·access·access开发
Tiramisu202320 分钟前
【VUE】删除 node_modules几种高效方法
前端·javascript·vue.js
钰fly21 分钟前
Windows Forms开发工具与功能总结表
前端·c#
共享家952724 分钟前
测试常用函数(一)
java·前端·javascript
不会写代码的里奇24 分钟前
从零开发基于DeepSeek的端侧离线大模型语音助手:全流程指南
c++·后端·音视频