Springboot-Vue-MybatisPlus 返回给前端的 Long类型数据失去精度怎么办?

在将自己的Mybatis的系统转换为Mybatis-Plus的时候,遇到了许多问题。

今天的问题是,Java实体类中的字段属性是Long类型、数据库MySql中的是bigint,在前端显示的时候Long的进度却丢失了,所有的ID显示的都一样,这该怎么解决呢?

实体类:

package com.neu.edu.cloudfactoryplus.bean;import com.baomidou.mybatisplus.annotation.*;import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;import java.io.Serializable;
import java.util.Date;/*** <p>** </p>** @author duzhenyang* @since 2021-08-17*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("factory_manager")
public class FactoryManager implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "fm_id", type = IdType.ID_WORKER)private Long fm_id;private String fm_name;private String fm_password;private String fm_realName;private String fm_contact;@JsonSerialize(using = ToStringSerializer.class)private Long fm_factoryID;/*** 乐观锁*/@Versionprivate Integer version;/*** 逻辑删除*/@TableLogicprivate Integer deleted;/*** 创建时间*/@TableField(fill = FieldFill.INSERT)private Date gmt_create;/*** 修改时间*/@TableField(fill = FieldFill.INSERT_UPDATE)private Date gmt_modified;}

数据库设计

错误结果:

如图所示,Long类型精度已经丢失!!!

解决办法:

1)如果你采用的是 Spring 中的 Jackson 进行 Json 格式封装,那么要这么做

用到了JsonFormat注解让对象属性在经过spring解析成JSON时直接转化成字符串,在要转的字段上加上一下字段:

 /*** 用户ID*/@TableId(value = "user_id", type = IdType.INPUT)@JsonFormat(shape = JsonFormat.Shape.STRING)//转化成string传到前端private Long userId;

或者写一个配置类进行全局拦截,将所有的 Long 类型(注意这里是 Long 包装类,不是 long 类型!!!)转换为 String 类型:

@Configuration
public class JacksonConfig {/*** Jackson全局转化long类型为String,解决jackson序列化时传入前端Long类型缺失精度问题*/@Beanpublic Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {Jackson2ObjectMapperBuilderCustomizer cunstomizer = new Jackson2ObjectMapperBuilderCustomizer() {@Overridepublic void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {//              jacksonObjectMapperBuilder.serializerByType(BigInteger.class, ToStringSerializer.instance);jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);
//                jacksonObjectMapperBuilder.serializerByType(Long.TYPE, ToStringSerializer.instance);}};return cunstomizer;}
}

2)如果你和我一样采用的是 alibaba 的 fastjson 进行 Json 格式封装,那么要这么做

在Long类型的字段上面加上注解,在转换为json的时候,讲此字段转为String类型(特别注意:加上注解导入类的时候,一定要仔细看清,导入alibaba的类,因为IDEA默认好像导入jackson的类,要不然会报错的!!!)

@JSONField(serializeUsing = ToStringSerializer.class)   //导入的注解private Long fm_factoryID;

注意这些导入的类的名字!!!!

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;

解决后的结果

看到这里了,不点个赞再走(o _ o)

Springboot-Vue-MybatisPlus 返回给前端的 Long类型数据失去精度怎么办 之 Long类型作为实体类的一个属性相关推荐

  1. SpringBoot+Vue+Mybatis-plus 博客(一):完成博客后台前端登录页面、后端登录接口

    SpringBoot+Vue+Mybatis-plus 博客:个人博客介绍及效果展示 SpringBoot+Vue+Mybatis-plus 博客(一):完成博客后台前端登录页面.后端登录接口 Spr ...

  2. SpringBoot+Vue+Mybatis-plus 博客(四):完成发布文章、编辑文章、删除文章及查询文章功能

    SpringBoot+Vue+Mybatis-plus 博客:个人博客介绍及效果展示 SpringBoot+Vue+Mybatis-plus 博客(一):完成博客后台前端登录页面.后端登录接口 Spr ...

  3. SpringBoot+Vue+Mybatis-plus 博客(七):完成友链管理前后端对接

    SpringBoot+Vue+Mybatis-plus 博客:个人博客介绍及效果展示 SpringBoot+Vue+Mybatis-plus 博客(一):完成博客后台前端登录页面.后端登录接口 Spr ...

  4. Springboot+Vue实现简单的前端后分离数据交互

    目录 一,前后端分离介绍 二,与传统单体结构的比较 2.1,传统单体结构开发 2.2,前后端分离结构开发 三,简单实现前后端数据交互 1,准备的环境及工具 2,开发步骤 2.1,后端部分 2.2,前端 ...

  5. 【Vue+SpringBoot】超详细!一周开发一个SpringBoot + Vue+MybatisPlus+Shiro+JWT+Redis前后端分离个人博客项目!!!【项目完结】

    项目目录 资源准备 前后端分离项目 技术栈 Java后端接口开发 1.前言 2.新建Springboot项目 3.整合mybatis plus 3.统一结果封装 4.整合shiro+jwt,并会话共享 ...

  6. 基于SpringBoot,vue从数据库到前端页面代码编写实战

    文章目录 后端 数据库sql语句及查询 mapper.xml文件 domain层 MyEmp.java文件中 在mapper.java文件下添加接口 在service层加上接口 在Controller ...

  7. SpringBoot+LayUI+MybatisPlus+Echarts图表 前后端分离 实现数据统计功能

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java快一年时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 首先给各位粉丝朋友 ...

  8. vue后端返回数据流 前端导出下载xls文件

    后端返回数据流, 前端导出下载xls文件 export function exportMethod() {axios({method:'get',url: url+'params',responseT ...

  9. vue 实现返回上一页不请求数据keep-alive

    常规操作: 我们通常会将通过接口请求数据的方法放在==created== 或者 ==mounted==这两个生命周期中的一个里面调用. 但是我们知道,不管是我们刚进入这个页面还是从其他页面返回这个页面 ...

最新文章

  1. Python中最好用的命令行解析工具:argparse
  2. 区块链的技术——账本是去中心化的分布式存储,加密+校验(哈希二叉树)+多数选举来防止篡改...
  3. keepalived lvs
  4. linux服务器ftp上传文件为空,Linux 服务器 ftp上传文件出现的问题
  5. 大数据的下一站是什么?服务/分析一体化(HSAP)
  6. laravel部署在linux出现404 not found
  7. 移动站点生成便捷之路:百度SiteApp
  8. R语言数据科学编程教程-从新手到大师
  9. CAD输出图至Word
  10. Excel如何将英语大写快速转变为小写
  11. duboo仿猫眼微服务架构—微服务入门
  12. 计算机应用程序没声音怎么办,电脑没声音怎么办
  13. 单元测试测试用例覆盖率为0
  14. php知识星球,解锁知识星球企业认证功能?重点看这6点
  15. Android互动直播APP开发入门笔记,吐血整理
  16. 解决硬盘分区错误, 纯Dos磁盘工具Diskpart的用法.
  17. Lua+Redis+OpenResty实现电商详情页
  18. mp4视频 一帧字节大小
  19. Python写个小游戏:蛇棋(下)
  20. python远程方法调用_Python远程方法调用 RPyC

热门文章

  1. java钢琴键_javapiano Java Piano模拟钢琴效果的完整源码 联合开发网 - pudn.com
  2. 如何让Moodle中所连结的flash等媒体事先呈现在画面上?
  3. python导入自定义模块和路径问题
  4. 'pip' 不是内部或外部命令,也不是可运行的程序
  5. PHP性能调优,PHP慢日志---PHP脚本执行效率性能检测之WebGrind的使用
  6. 亚信产业互联网生态亮相2016南京软博会
  7. 苹果「热修复门」事件复盘、分析和展望
  8. 转:乐视秒杀:每秒十万笔交易的数据架构解读
  9. RBAC权限设计实例(转)
  10. 编程之美2.10:寻找数组中的最大值和最小值