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;     //公司名称
相关推荐
打瞌睡的朱尤3 分钟前
Vue day10 完整购物网页(登录页,首页,搜索)
前端·javascript·vue.js
RFG20123 分钟前
20、详解Dubbo框架:消费方如何动态获取服务提供方地址?【微服务架构入门】
java·人工智能·后端·微服务·云原生·架构·dubbo
扶苏10021 小时前
深入理解 Vue 3 的 watchEffect
前端·javascript·vue.js
TimberWill2 小时前
SpringBoot整合Srping Security实现权限控制
java·spring boot·后端
未来龙皇小蓝3 小时前
RBAC前端架构-05:引入Element-UI及相关逻辑
前端·ui
yanlele4 小时前
AI Coding 时代下, 关于你会写代码这件事儿, 还重要吗?
前端·javascript·ai编程
打瞌睡的朱尤4 小时前
Vue day9 购物车,项目,vant组件库,vw,路由
前端·javascript·vue.js
米羊1215 小时前
Struts 2 漏洞(上)
java·后端·struts
梵得儿SHI5 小时前
Spring Cloud 实战攻坚:企业级用户服务开发(注册登录 + JWT 认证 + 权限控制)
后端·spring·spring cloud·用户注册与登录·jwt无状态认证体系·rbac权限控制·微服务用户中心
星火开发设计6 小时前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法