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;     //公司名称
相关推荐
你好潘先生3 分钟前
让 AI 任务不丢进度:YeeroAI 后台续跑与全局快捷操作实践
前端·人工智能·后端
Circ.10 分钟前
SpringBoot 实现文件上传与下载(完整源码 + 详细教程)
java·spring boot·后端
小KK_19 分钟前
写给前端小白:我终于搞懂了JS原型和原型链
前端·javascript
烂人文21 分钟前
Codex 走中转站后,手机也能远程控制,Free 账号也能用
前端
Java技术小馆24 分钟前
Claude Code CLI 命令大全:60 个原生命令一次讲清
前端·后端
zzqssliu25 分钟前
Spring Boot + XXL-JOB 搭建淘宝代购系统任务调度中心
java·spring boot·后端
LCG元43 分钟前
深耕多智能体编排,解锁复杂Agent开发之路
前端·数据库·人工智能
kunge20131 小时前
Claude Code 工作流中的命令实现与自定义指南
人工智能·后端·架构
拾年2751 小时前
520刚过,今天来教你怎么"驾驭"别人的对象
前端·javascript