先看问题:
数据库 id 为 Bigint 类型:
通过后端逻辑取值返回给前端:
JS 的number类型有个最大值(安全值)。即2的53次方,为9007199254740992(16位)。如果超过这个值,那么js会出现不精确的问题。
可以看出数据已经出错,js中数字类型最长为17位,导致后几位就会变成000,而导致后端查出来的数据与前端看到的ID不一致
解决办法可以这样:
使用 Fastjson 的 ToStringSerializer 注解,让系统序列化时,保留相关精度。
@JsonSerialize(using = ToStringSerializer.class)
private Long id;