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;     //公司名称
相关推荐
a8a30216 小时前
Laravel9.x新特性全解析
运维·spring boot·nginx
唯火锅不可辜负16 小时前
uniapp开发公众号订阅功能踩坑小记
前端·vue.js
安德鲁202216 小时前
Spring Boot + Undertow 全栈架构深度剖析时序图
后端
码事漫谈16 小时前
AI 正在重塑职场:有人乘风破浪,有人悄然掉队
后端
opteOG17 小时前
游览器跨域问题详解
前端
SameX17 小时前
后台 GPS 记录从半天掉电 30% 到全天 8%,我的三版方案演进
前端
Cder17 小时前
用 React + Ink 在终端里「优雅搜索」:开源 CLI 设计与非交互模式实践
前端·agent
用户974369707252817 小时前
5分钟搭建企业级实时消息推送系统
后端·websocket
像我这样帅的人丶你还17 小时前
前端监控体系与实践(二):全局监控
前端·javascript·vue.js
counting money17 小时前
Spring框架基础(配置篇)
java·后端·spring