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;     //公司名称
相关推荐
GDAL几秒前
css实现元素居中的18种方法
前端·css·面试·html·css3·css居中
Victor3561 分钟前
Redis(162)如何使用Redis实现消息队列?
后端
copyer_xyf3 分钟前
SQL 语法速查手册:前端开发者的学习笔记
前端·数据库·sql
Victor3566 分钟前
Redis(163)如何使用Redis实现计数器?
后端
拾忆,想起6 分钟前
Dubbo服务版本控制完全指南:实现微服务平滑升级的金钥匙
前端·微服务·云原生·架构·dubbo·safari
KD8 分钟前
数据密集型应用系统设计——面试总结版
后端
艾小码9 分钟前
还在为Vue应用的报错而头疼?这招让你彻底掌控全局
前端·javascript·vue.js
sheji341610 分钟前
【开题答辩全过程】以 基于JavaWeb的高校实验实训教学平台为例,包含答辩的问题和答案
java·spring boot
小马爱打代码8 小时前
Spring Boot:模块化实战 - 保持清晰架构
java·spring boot·架构
遇到困难睡大觉哈哈8 小时前
Harmony os 静态卡片(ArkTS + FormLink)详细介绍
前端·microsoft·harmonyos·鸿蒙