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;     //公司名称
相关推荐
绝世唐门三哥2 分钟前
使用Intersection Observer js实现超出视口固定底部按钮
开发语言·前端·javascript
用户25542581802166 分钟前
Spring AI(二):如何在使用的时候指定角色,使用模板
后端
YDS82916 分钟前
SpringCloud —— 黑马商城的项目拆分和Nacos
spring boot·后端·spring cloud
鲸落落丶19 分钟前
Vue Router路由
前端·javascript·vue.js
卜锦元19 分钟前
Golang中make()和new()的区别与作用?
开发语言·后端·golang
阿呜的边城22 分钟前
终于还是吃上了react-i18next的细糠
前端·前端框架
疯狂的程序猴22 分钟前
iOS 应用保护工具怎么选?从攻击面拆解到工具职责划分的全链路实战指南
后端
中文很快乐30 分钟前
从零到一:用 SpringBoot 打造 RESTful API 实战指南
java·spring boot·后端·restful
米方31 分钟前
ElementPlus 穿梭框支持批量穿梭
前端·javascript·vue.js
InkHeart31 分钟前
uni-app开发路上的坑
前端·vue.js