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;     //公司名称
相关推荐
n***i9514 小时前
前端技术的下一场进化:从工程化走向智能化的全面重构
前端·重构
archko14 小时前
用rust写了一个桌面app,就不再想用kmp了
开发语言·后端·rust
华仔啊14 小时前
RabbitMQ 的 6 种工作模式你都掌握了吗?附完整可运行代码
java·后端·rabbitmq
@大迁世界14 小时前
紧急:React 19 和 Next.js 的 React 服务器组件存在关键漏洞
服务器·前端·javascript·react.js·前端框架
晓得迷路了14 小时前
栗子前端技术周刊第 109 期 - Vite 8 Beta、JavaScript 三十周年、Prettier 3.7...
前端·javascript·vite
Terry_Tsang14 小时前
ceph mon 报错 full ratio(s) out of order 解决方法
服务器·前端·ceph
计算机毕设MTU775714 小时前
999+套计算机毕业设计——基于HTML5+CSS的图书馆借阅管理系统的设计与实现(含源码+部署教程+数据库)
数据库·spring boot·课程设计·借阅管理系统·图书馆
星释14 小时前
Rust 练习册 109:深入探索列表关系判断
开发语言·后端·rust
韩曙亮14 小时前
【Web APIs】元素偏移量 offset 系列属性 ④ ( offset 属性案例 - 放大镜效果 )
前端·javascript·css·html·offset·dom·web apis
宁雨桥14 小时前
前端网页加载进度条实现指南:Vue3+Vite工程化场景
前端·javascript·性能优化