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;     //公司名称
相关推荐
Wect3 分钟前
学习React-DnD:实现多任务项拖拽-useDrop处理
前端·react.js
SelectDB7 分钟前
Apache Doris AI 能力揭秘(三):AI_AGG 与 EMBED 函数深度解析
数据库·后端·apache
y***613111 分钟前
在Spring Boot项目中使用MySQL数据库
数据库·spring boot·mysql
清晰-简洁16 分钟前
Spring Boot 单元测试按需加载
spring boot·后端·单元测试
linuxxx11018 分钟前
高考志愿填报辅助系统
redis·后端·python·mysql·ai·django·高考
Mintopia21 分钟前
Trae Coding - 「Excel 秒变海报」—— 上传 CSV,一句话生成可打印信息图。
前端·人工智能·trae
q***420529 分钟前
Spring Boot 整合 log4j2 日志配置教程
spring boot·单元测试·log4j
晴殇i32 分钟前
CSS 相对颜色:告别 180 个颜色变量的设计系统噩梦
前端·css
MegatronKing33 分钟前
Reqable 3.0版本云同步的实践过程
前端·后端·测试
李剑一33 分钟前
我用Trae生成了一个Echarts 3D柱状图的Demo
前端·vue.js·trae