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;     //公司名称
相关推荐
星辰徐哥6 分钟前
表单优化:AI驱动HTML5表单的智能验证与提示功能
前端·人工智能·html5
普通网友6 分钟前
HTML5新增了哪些重要标签?多多学习也是成长的一部分
前端·学习·html5
2501_906467637 分钟前
html5网页中如何实现内网大文件的加密下载?
前端·html·html5·vue上传解决方案·vue断点续传·vue分片上传下载·vue分块上传下载
敲敲千反田7 分钟前
Spring 相关
java·后端·spring
何何____17 分钟前
css变换语法介绍及案例展示
前端·css
小碗羊肉24 分钟前
【JavaWeb | 第四篇】分层解耦
java·后端·servlet
薪火铺子35 分钟前
Redis 分布式锁与 Redisson 原理深度解析
java·redis·分布式·后端
冴羽yayujs39 分钟前
GitHub 前端热榜项目 - 日榜(2026-05-07)
前端·github
深蓝海拓42 分钟前
用HSL颜色系统改造qdarkstyle样式表库
前端·笔记·python·qt·学习
azhou的代码园1 小时前
基于微信小程序的图片识别科普系统的设计与实现
vue.js·spring boot·微信小程序·小程序·毕业设计·科普·图片识别