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;     //公司名称
相关推荐
b***59432 分钟前
分布式WEB应用中会话管理的变迁之路
前端·分布式
q***21605 分钟前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
j***12156 分钟前
Spring Boot与MyBatis
spring boot·后端·mybatis
optimistic_chen20 分钟前
【Java EE进阶 --- SpringBoot】Spring事务传播机制
spring boot·后端·spring·java-ee·事务·事务传播机制
顾安r21 分钟前
11.21 脚本 网页优化
linux·前端·javascript·算法·html
q***T5831 小时前
GitHub星标20万+的React项目,学习价值分析
前端·学习·react.js
l***74941 小时前
SQL Server2022版+SSMS安装教程(保姆级)
后端·python·flask
合作小小程序员小小店1 小时前
web开发,在线%药店管理%系统,基于Idea,html,css,jQuery,java,ssm,mysql。
java·前端·mysql·jdk·html·intellij-idea
ClassOps1 小时前
Chrome 插件记录
前端·chrome
笙年2 小时前
Vue 作用域插槽
前端·javascript·vue.js