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;     //公司名称
相关推荐
C_心欲无痕几秒前
vue3 - useId生成唯一标识符
前端·javascript·vue.js·vue3
KoalaShane1 分钟前
El-slider 增加鼠标滚动滑块事件
开发语言·前端·javascript
栀秋66610 分钟前
Tailwind CSS:用“类名编程”重构你的前端开发体验
前端·css
C_心欲无痕14 分钟前
vue3 - watchSyncEffect同步执行的响应式副作用
开发语言·前端·javascript·vue.js·vue3
用泥种荷花29 分钟前
【前端学习AI】FewShotPromptTemplate
前端
a努力。29 分钟前
字节Java面试被问:系统限流的实现方式
java·开发语言·后端·面试·职场和发展·golang
小魔女千千鱼32 分钟前
在 Vue 中,this 的行为在箭头函数和普通函数中是不同的
前端·javascript·vue.js
霍理迪1 小时前
CSS盒模型布局规则
前端·javascript·css
千寻girling1 小时前
面试官: “ 说一下 JS 中什么是事件循环 ? ”
前端·javascript
程序员龙语1 小时前
CSS 高级选择器应用
前端·css