mybatis-plus雪花算法自动生成ID到前端后精度丢失问题

问题发生

前端接收到后端的数据出现异常,异常如下:

如图这是后端正常返回的数据,

image-20231210233224808

但是点击预览时发现这个id的数据被改变了

image-20231210233153716

这就导致了我通过id去修改相关数据时无法成功

问题原因

id的长度过长(19位),前端js的Number类型精度为16位,所以导致数据格式化精度丢失

这个id是我用mybatis-plus的雪花算法自动生成的,后端实体类似如下:

image-20231210233724815

后端实体参数使用Long类型是没有任何问题的,关键就在于Long类型到前端后在解析json时候会被解析为Number类型导致精度缺失。

问题解决

方案一

修改后端全部实体的id为String类型,并且修改数据库类型

方案二

优化后端返回给前端数据时候的JSON序列化,将Long类型转变为String响应给前端

**注:**在springBoot应用中默认使用Jackson进行JSON序列化响应数据给前端

package com.newblog.security.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

/**
 * <p>
 *
 * </p>
 *
 * @author:雷子杰
 * @date:2023/12/10
 */
@Configuration
public class JacksonConfig {

    @Bean
    @Primary
    @ConditionalOnMissingBean(ObjectMapper.class)
    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder)
    {
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();

        // 全局配置序列化返回 JSON 处理
        SimpleModule simpleModule = new SimpleModule();
        //JSON Long ==> String
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);
        return objectMapper;
    }

}

参考文档

  • https://juejin.cn/post/6864692212442398728

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/248019.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI大模型驱动的教育变革与实践

随着人工智能技术的飞速进步&#xff0c;我们正在见证一场教育领域的革命。在这场革命中&#xff0c;AI大模型作为关键技术&#xff0c;正深刻地改变着教育行业的面貌。AI大模型的出现&#xff0c;如GPT-3.5等&#xff0c;不仅为教育领域带来了新的发展机遇&#xff0c;也对其提…

C#基础——类、对象和属性

C# 属于 面向对象 的编程&#xff0c;“万物皆对象” 面向对象编程的三大特性&#xff1a;封装、继承、多态。 通过类能过较好的体现该语言的特点 类&#xff1a;是具有相同属性和行为特征的集合 类的语法格式&#xff1a; 访问修饰符 class关键字 类名 两种创建类的方式 第…

Visual Studio编辑器中C4996 ‘scanf‘: This function or variable may be unsafe.问题解决方案

目录 ​编辑 题目&#xff1a;简单的ab 1. 题目描述 2. 输入格式 3. 输出格式 4. 样例输入 5. 样例输出 6. 解题思路 7. 代码示例 8. 报错解决 方案一 方案二 方案三 方案四 总结 题目&#xff1a;简单的ab 1. 题目描述 输入两个整数a和b&#xff0c;…

12.15

写这段代码改了好几个小时&#xff0c;从有这个想法到完成花费了比较久的时间&#xff0c;也很有成就感。速成课给的伪代码思路漏掉了需要判断最小数是否正好是这个数本身这个条件&#xff0c;所以一直报错。所以写代码要把每种可能性都涵盖&#xff0c;不然程序就会出问题。之…

DVGO 代码阅读

BBx 的大小范围是 根据 相机的 位姿来构建的&#xff0c;会刚好 Cover 相机的移动范围&#xff0c;相当于 StreetSurf 里面的 close-range 的部分&#xff0c;代码在compute_bbox_by_cam_frustrm_unbounded 这个函数里面&#xff1a; xyz_min, xyz_max _compute_bbox_by_cam_f…

springcloud项目实战之自定义负载均衡器

系列文章 。 写在前面 本部分看下如何自定义负载均衡器从而满足业务对于负载均衡特定的需求。 源码 。 1&#xff1a;负载均衡的知识点 1.1&#xff1a;什么是负载均衡&#xff1f; 多台服务器随机的选择一台处理请求的技术&#xff0c;叫做负载均衡自己总结的&#xff0c…

jstat虚拟机统计信息监控工具

jstat虚拟机统计信息监控工具 1、jstat&#xff08;JVM Statistics Monitorning Tool&#xff09; 用于监控虚拟机各种运行状态信息的命令行工具。 它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据&#xff0c;它是运行期定位虚拟机 性能问题…

VRRP协议详解

目录 一、基础概念 1、概念 2、VRRP的基本结构 状态机 二、VRRP主备备份工作过程 1、备份工作过程 2、VRRP的负载分担工作 三、实验 一、基础概念 1、概念 VRRP能够在不改变组网的情况下&#xff0c;将多台路由器虚拟成一个虚拟路由器&#xff0c;通过配置虚拟路由器的I…

StarCCM+ 导入STL几何模型进行仿真

使用 StarCCM 进行仿真时&#xff0c;通常都是用 3D-CAD Model 导入 CAD 类型的几何模型。但对于一些特殊情况&#xff0c;例如通过三维重建等方法获得的几何模型是 STL 文件而非 CAD 文件&#xff0c;这种情况下可以通过 Import Surface Mesh 的方法导入 STL 文件进行仿真&…

浮在文字上面的下划线的设置css

话不多说直接贴代码 前5行css就是实现的代码&#xff1a; p {text-decoration-line: underline;text-underline-offset: -7.5px;text-decoration-thickness: 5px;text-underline-position: under;text-decoration-color: #FFF200;color: #666;font-size: 20px;line-height: 2…

【源码系列】外卖系统外卖平台外卖软件开发外卖小程序APP

系统概念 外卖系统是一套类似美团和饿了么的外卖送餐解决方案&#xff0c;可以在PC、H5、APP、小程序、微信等全平台进行操作。系统配备用户端、商户端、配送端、管理端&#xff0c;可供消费者、商家、骑手&#xff0c;平台多角色使用。同时提供调度中心、分站管理等增值功能。…

openoffice安装

安装openoffice 下载安装包 建议去官网下载&#xff0c;这里给出官网地址&#xff1a;https://www.openoffice.org/download/ 这里以linux为例&#xff0c;所以我下载的是unbantu的版本(deb) 解压安装包 tar -zxvf Apache_OpenOffice_4.1.13_Linux_x86-64_install-deb_zh-…

【lesson15】MySQL表基本查询 (retrieve(2))

文章目录 表的基本操作介绍retrieve结果排序建表基本测试 筛选分页结果建表测试 表的基本操作介绍 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; retrieve 结果排序 建表 建表这里就不建了&#xff0c;因为…

【期末复习向】n元gram的应用

当 n 1 时&#xff0c; 即出现 在 第 i 位 上 的基 元 w i 独 立于 历 史 。 一元文法也 被 写 为 uni-gram 或 monogram&#xff1b; 当 n 2 时 , 2-gram ( bi-gram ) 被称 为 1 阶 马 尔 可夫 链&#xff1b; 当 n 3 时 , 3-gram( tri-gram ) 被称为 2 阶马尔 可 夫 链 &am…

上门回收小程序开发,让环保发展成收益

如今资源回收&#xff0c;保护环境已成为全球人民共同追求的目标&#xff0c;人们的环保意识也逐渐提高&#xff0c;回收行业受到了大众的关注。 在移动互联网的发展下&#xff0c;传统回收行业也逐渐向线上智能化转型&#xff0c;线上上门回收小程序也逐渐出现在了大众生活中…

C语言的system函数简介

函数原型 包含在头文件 “stdlib.h” 中 int system(const char * command) 函数功能 执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令&#xff0c;参数字符串command为命令名。另&#xff0c;在windows系统下参数字符串不区分大小写。 说明&#xff1a;在windows系统中&…

基于ssm服装定制系统源码和论文

idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 环境&#xff1a; jdk8 tomcat8.5 开发技术 ssm 基于ssm服装定制系统源码和论文751 1.1项目研究的背景 困扰管理层的许多问题当中,服装定制将是广大用户们不可忽视的一块。但是管理好服装定制又面临很多麻…

VINS-MONO代码解读6----pose_graph

开始pose_graph部分&#xff0c;本部分记住一句话无论是快速重定位还是正常重定位&#xff0c;求出 T w 1 w 2 T_{w_1w_2} Tw1​w2​​就是终极目标。 还剩一个整体Pipeline~~ 1. pose_graph_node.cpp 注意&#xff0c;定义全局变量时即实例化了一个对象 PoseGraph posegra…

26种主流的神经网络偏微分方程求解方法汇总

偏微分方程&#xff08;PDE&#xff09;是数学中一门重要的分支&#xff0c;应用范围广泛涉及自然科学、工程技术、生物学领域等。然而我们都知道&#xff0c;偏微分方程的求解过程异常艰难&#xff0c;如果碰上了特别复杂的&#xff0c;传统的计算方法可能需要数百万个CPU小时…

[多线程]一篇文章带你看懂Java中的synchronized关键字(线程安全)锁的深入理解

目录 1.前言 2.synchronized的特性 2.1synchronized前言 2.2乐观锁和悲观锁 2.3重量级锁和轻量级锁 重量级锁 &#xff1a; 轻量级锁&#xff1a; 2.4自旋锁和挂起等待锁 2.5 公平锁和非公平锁 公平锁&#xff1a; 非公平锁&#xff1a; 2.6可重入锁和不可重入锁 可…