Mybatis-Plus雪花算法精度丢失问题

博客讲述了在与前端对接时遇到的数据精度丢失问题,由于Long类型的ID在经过雪花算法后变成19位,前端处理后导致后两位变为零。解决方案是使用Jackson库的@JsonFormat注解将Long类型主键转换为String,避免精度丢失,同时保持良好的查询性能。此外,讨论了直接使用String类型作为主键可能带来的查询性能下降问题。
摘要由CSDN通过智能技术生成

       最近在与前端对接的过程中发现一些数据经过前端的查询编辑修改之后,存入到数据库中的数据和之前的原始数据总是对不上,后两位一直是零。导致本来正常的数据列表,经过一番操作之后列表一直报错,查询不到数据。在debug模式下,终于观察到,在前端调用详情时,我反给他的主键ID后两位是不对的

        然后想到Long类型的长度是16位,雪花算法生成的ID是19位,这样返回的话,肯定会出现精度丢失。
解决方案:

import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(shape = JsonFormat.Shape.STRING)
@ApiModelProperty(value = "主键ID")
private Long id;

 这样的话返回给前端的就会格式化为String类型,就不会出现精度丢失。想到这里,有小伙伴就说了为什么不能直接返回String类型呢?因为主键为String类型做数据库查询性能会降低很多,通过这个注解即可解决性能问题,也可以保证数据一致。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值