Java Long数据类型如何避免前端损失精度呢?

戚薇 Java经验 发布时间:2023-05-10 21:51:14 阅读数:3744 1
下文笔者讲述java中Long类型传递给前端避免精度丢失的方法
在日常开发中,我们数据库中的主键采用mybatis中的自带的生成策略生成
  如果实体类中采用Long类型接收
  返回给前端,此时可能会损失精度

出现精度的原因

对于Long类型的数据
   在Java中long数据类型是64位,最大值是2^63-1
   JavaScript中的number类型,最大的安全整数2^53-1

解决前端Long类型精度丢失的方法:
    将Long类型转换为字符串传回给前台

mybatis中IdType简介

@Getter
public enum IdType {
    /**
     * 数据库ID自增
     */
    AUTO(0),
    /**
     * 该类型为未设置主键类型
     */
    NONE(1),
    /**
     * 用户输入ID
     * 该类型可以通过自己注册自动填充插件进行填充
     */
    INPUT(2),

    /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */
    /**
     * 全局唯一ID (idWorker)
     */
    ID_WORKER(3),
    /**
     * 全局唯一ID (UUID)
     */
    UUID(4),
    /**
     * 字符串全局唯一ID (idWorker 的字符串表示)
     */
    ID_WORKER_STR(5);

    private final int key;

    IdType(int key) {
        this.key = key;
    }
}
备注
IdType.AUTO 数据库ID自增
IdType.INPUT 用户输入ID
IdType.ID_WORKER 全局唯一ID,内容为空自动填充
IdType.UUID 全局唯一ID,内容为空自动填充

java中避免前端Long类型精度损失的方法

//方式1:
    在序列化时需要保留精度的字段
	   添加@JsonSerialize注解即可

@JsonSerialize(using = ToStringSerializer.class)
private list<Long> id;

//方式2
在数据转换时,定义一个dto,Id字段采用给String类型
   此时回传给前台时,则会自动采用String的方式

总之采用字符串的方式传回前台,即可避免精度损失
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202305/16837267206400.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者