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;     //公司名称
相关推荐
温轻舟8 分钟前
禁毒路上,任重道远 | HTML页面
开发语言·前端·javascript·css·html·温轻舟
g***866917 分钟前
springboot中配置logback-spring.xml
spring boot·spring·logback
p***q7822 分钟前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
likuolei27 分钟前
XSL-FO 列表
前端·数据库
shaohaoyongchuang27 分钟前
vue_03路由
前端·javascript·vue.js
学历真的很重要28 分钟前
Hello-Agents —— 03大语言模型基础 通俗总结
开发语言·人工智能·后端·语言模型·自然语言处理·面试·langchain
3***161031 分钟前
【JavaEE】Spring Boot 项目创建
java·spring boot·java-ee
我叫张小白。34 分钟前
Vue3计算属性:高效数据处理
前端·javascript·vue.js·前端框架·vue
6***v41734 分钟前
VScode 开发 Springboot 程序
java·spring boot·后端
t***316538 分钟前
SpringBoot中自定义Starter
java·spring boot·后端