位置: IT常识 - 正文

解决雪花算法生成的ID传输前端后精度丢失(雪花算法workid)

编辑:rootadmin
解决雪花算法生成的ID传输前端后精度丢失

推荐整理分享解决雪花算法生成的ID传输前端后精度丢失(雪花算法workid),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:雪花算法改进,雪花算法的作用,雪花算法workid,雪花算法改进,雪花算法应用场景,雪花算法的作用,解决雪花算法生产问题,雪花算法改进,内容如对您有帮助,希望把文章链接给更多的朋友!

本章目录:

问题描述解决方案修改数据库字段配置MVC全局消息转换器修改Result类 一、问题描述 

在用雪花算法生成的ID传输到前端时,会出现后三位精度丢失

可以看到,我们得到的response为1594605819398193154

而前端展示的为1594605819398193200

这是因为JS是弱语言,前端接收数字类型参数为number

最大接收长度为16位,超出长度则会丢失精度

而JAVA的Long类型长度为19位,所以传输到前端的后三位精度丢失

解决雪花算法生成的ID传输前端后精度丢失(雪花算法workid)

所以我们解决该问题的思路就是:把java里的Long类型转换为String返回给前端

二、解决方案2.1、修改数据库字段

可以把数据库的ID字段从Long改为varchar,不过不建议这样做,这样修改后查询无法走索引,降低了效率

2.2、配置MVC全局消息转换器

我们可以在springmvc的配置类中(也就是继承了WebMvcConfigurationSupport接口的那个配置类)重写extendMessageConverters方法

/** * 扩展mvc框架的消息转换器 * @param converters */ @SneakyThrows @Override protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { //创建消息转换器对象 MappingJackson2HttpMessageConverter messageConverter=new MappingJackson2HttpMessageConverter(); //设置对象转换器,底层使用Jackson将Java对象转为json messageConverter.setObjectMapper(new JacksonObjectMapper()); //将上面的消息转换器对象追加到mvc框架的转换器集合中 converters.add(0,messageConverter); }

编写一个JacksonObjectMapper类

/** * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象] * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON] */public class JacksonObjectMapper extends ObjectMapper { public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd"; public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss"; public JacksonObjectMapper() throws NoSuchFieldException { SimpleModule simpleModule = new SimpleModule() .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT))) .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT))) .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT))) .addSerializer(BigInteger.class, ToStringSerializer.instance) .addSerializer(Long.class, ToStringSerializer.instance) .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT))) .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT))) .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT))); //注册功能模块 例如,可以添加自定义序列化器和反序列化器 this.registerModule(simpleModule); }}

注意:该方法是将所有Long类型都序列化成String的《全局转换》 

2.3、修改Result类型

我这边封装了一个Result类,可以直接用String.valueOf去把Long类型的id转换成String

也可以在Result类里多加一个判断

本文链接地址:https://www.jiuchutong.com/zhishi/297564.html 转载请保留说明!

上一篇:【微信小程序】使用uni-app——开发首页搜索框导航栏(可同时兼容APP、H5、小程序)(微信小程序在哪里找?)

下一篇:前端 - get请求传递数组(前端get请求传数组)

  • 充电宝可以带上飞机吗2020(充电宝可以带上飞机吗)(充电宝可以带上北京地铁吗)

    充电宝可以带上飞机吗2020(充电宝可以带上飞机吗)(充电宝可以带上北京地铁吗)

  • 苹果face id可以设置多少个(苹果faceid可以输入两人嘛)

    苹果face id可以设置多少个(苹果faceid可以输入两人嘛)

  • 微信视频发热严重(手机微信视频发热正常吗?)

    微信视频发热严重(手机微信视频发热正常吗?)

  • 拼多多天天领现金上限怎么办(拼多多天天领现金0.01破解方法)

    拼多多天天领现金上限怎么办(拼多多天天领现金0.01破解方法)

  • 笔记本桌面最下面一排失灵(笔记本桌面最下面一连网一排失灵)

    笔记本桌面最下面一排失灵(笔记本桌面最下面一连网一排失灵)

  • 微信图片过大怎么发送(微信图片过大怎么改小)

    微信图片过大怎么发送(微信图片过大怎么改小)

  • 老电脑装win10会卡吗(老电脑怎么装win10系统)

    老电脑装win10会卡吗(老电脑怎么装win10系统)

  • 百兆口最大网速多少(百兆网口有多快)

    百兆口最大网速多少(百兆网口有多快)

  • 苹果11充电发热(苹果11充电发热怎么解决)

    苹果11充电发热(苹果11充电发热怎么解决)

  • 第一台计算机诞生于什么国家(第一台计算机诞生于20世纪多少年代)

    第一台计算机诞生于什么国家(第一台计算机诞生于20世纪多少年代)

  • 钉钉直播时分屏影响观看时间吗

    钉钉直播时分屏影响观看时间吗

  • 快手注销了别人就搜不到了吗(快手注销了别人还能搜到我吗)

    快手注销了别人就搜不到了吗(快手注销了别人还能搜到我吗)

  • 朋友圈卡顿是什么原因(朋友圈太卡怎么办)

    朋友圈卡顿是什么原因(朋友圈太卡怎么办)

  • 多用表的原理和使用(多用表的原理和使用实验分析与讨论)

    多用表的原理和使用(多用表的原理和使用实验分析与讨论)

  • 手机qq语音闭麦是灰色还是白色(手机qq语音闭麦怎么回事)

    手机qq语音闭麦是灰色还是白色(手机qq语音闭麦怎么回事)

  • xs基带有高通的吗

    xs基带有高通的吗

  • 华为平板m5支持otg吗(华为平板m5支持扩展内存吗)

    华为平板m5支持otg吗(华为平板m5支持扩展内存吗)

  • hb386590ecw电池是什么手机(hb386590ecw电池是什么手机三星s20fe拆机)

    hb386590ecw电池是什么手机(hb386590ecw电池是什么手机三星s20fe拆机)

  • oppo充电器是什么接口(oppo充电器叫什么名字)

    oppo充电器是什么接口(oppo充电器叫什么名字)

  • 苹果手机能恢复原系统吗(苹果手机能恢复删除的联系人吗)

    苹果手机能恢复原系统吗(苹果手机能恢复删除的联系人吗)

  • 苹果手机怎么设置每天自动开关机时间(苹果手机怎么设置门禁卡NFC)

    苹果手机怎么设置每天自动开关机时间(苹果手机怎么设置门禁卡NFC)

  • 学信网的账号管理在哪(学信网的账号管理在哪里查看)

    学信网的账号管理在哪(学信网的账号管理在哪里查看)

  • 如何发送自己店铺链接(怎么发自己的网店链接)

    如何发送自己店铺链接(怎么发自己的网店链接)

  • oppor9s有nfc功能吗(oppor9s有nfc功能么)

    oppor9s有nfc功能吗(oppor9s有nfc功能么)

  • apple pencil和普通电容笔区别(普通的pencil和apple pencil)

    apple pencil和普通电容笔区别(普通的pencil和apple pencil)

  • tim怎么发闪照(tim如何发闪照片)

    tim怎么发闪照(tim如何发闪照片)

  • 3g内存和4g内存的区别(手机3g内存和4g内存的差距)

    3g内存和4g内存的区别(手机3g内存和4g内存的差距)

  • dcs是什么(dcs是什么化学物质)

    dcs是什么(dcs是什么化学物质)

  • 在win10中,怎么解决开机要输入用户密码?(在win10中怎么从edge旧ie浏览器)

    在win10中,怎么解决开机要输入用户密码?(在win10中怎么从edge旧ie浏览器)

  • 企业当期应纳增值税
  • 滑准税是指关税的税率
  • 税款代码
  • 一般纳税人资格证明在哪里查询
  • 增值税发票管理办法及细则
  • 自来水厂会污染水源吗
  • 实收资本何时交税
  • 冲企业所得税的分录
  • 停用的厂房折旧吗
  • 自然人转让股权给自己的公司
  • 邀请境外机构提出申请
  • 购货无法取得发票财务如何处理
  • 购买完货物又退回怎么办
  • 企业所得税季度申报时间
  • 收到银行存款怎么记账
  • 单位自有车辆
  • 修理厂专票怎么开
  • 代增值税专用发票网上申请
  • 纳税人在同一地级行政范围内跨县经营
  • 购买方纳税人识别号是什么意思
  • 最新事业单位固定资产折旧规定
  • 营改增后小规模纳税人如何报税
  • 公司账户怎么走账
  • 以库存抵债的账务处理
  • 只有原始凭证无入库单跟发票如何记账?
  • 私营公司可以构成单位犯罪吗
  • 白酒消费税最低计税价格
  • 办公用品收据可以入账吗
  • 支付外汇代扣代缴增值税
  • 苹果手机录音配音乐怎么配
  • 一般劳务报酬和其他劳务报酬的区别
  • 销售费用占收入比例叫什么
  • 积分抵现金活动怎么做
  • 文件夹属性没有安全
  • 本期填写的适用3减1政策的本期发生额大于
  • 支付水费现金流量
  • 国家信用信息公司系公示
  • 魁北克位置地图
  • 入库前的准备
  • thinkphp登录验证
  • 金融商品转让属于什么服务
  • 外商投资的企业再投资
  • 蒂内河畔圣艾蒂安小镇,法国阿尔卑斯省 (© CAVALIER Michel/hemis.fr/Alamy Stock Photo)
  • php 字符串处理函数
  • transformer add norm
  • 红冲上年度收入怎么做凭证
  • 企业的营业税金及附加
  • hostnamectl命令
  • 股息和未分配利润的区别
  • 帝国cms怎么用
  • 包含个人社保的保险
  • python中numpy数组和列表的区别
  • openglskia是什么意思
  • dedecms配置
  • 低值易耗品还需要录入明细吗
  • 增值税发票抵扣联的作用
  • sql server数据库连接端口1434
  • 先预付货款,货到了怎么做账
  • 新成立的小规模纳税人什么时候报税
  • 预付账款余额在贷方为
  • 无形资产的相关税费
  • 员工宿舍发生事故赔偿吗
  • 法人投资属于什么会计科目
  • 农民工工资专用账户管理制度的办法
  • kvm虚拟机paused
  • win8系统怎么改win10
  • 电脑怎么换系统教程
  • xp系统做完了进不去
  • windows7桌面右击
  • 在linux系统中,用来存在系统所需
  • jquery如何赋值
  • perl 教程
  • 好用的shell终端
  • nodejs 动态网页
  • shell脚本语句
  • centos6.5
  • js有几种模式
  • 为什么发莎
  • 版权登记条件
  • 退回多扣的个人所得税会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设