问题截图 :

问题产生的原因:

js只保存16位long数据类型,默认将后三位进行四舍五入处理,将该数据返回给后端执行数据库crud影响行数为0;

解决方案:

将long类型转换成string类型防止精度丢失问题

解决方法:

具体实现步骤:
1、提供对象转换器JacksonObjectMapper,基于Jackson进行java对象序列化
2、在spring配置类中扩展Spring mvc 的消息转换器,在此消息转换器中添加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() {super();//收到未知属性时不报异常this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);//反序列化时,属性不存在的兼容处理this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);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);}
}
@Configuration
@Slf4j
public class WebMvcConfig extends WebMvcConfigurationSupport {/*** 设置静态资源映射* @param registry*/@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info("开始进行静态资源映射!!!");registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");}/*** 扩展mvc框架的消息转换器* @param converters*/@Overrideprotected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {log.info("扩展消息转换器...");//创建消息转换器对象MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();//设置对象转换器,底层使用Jackson将Java对象转为jsonmessageConverter.setObjectMapper(new JacksonObjectMapper());//将上面的消息转换器对象追加到mvc框架的转换器集合中,设置索引为0保证优先使用该转换器converters.add(0,messageConverter);}
}

解决js接收mysql雪花算法数据精度丢失问题相关推荐

  1. 关于前后端雪花算法Long转String丢失精度问题

    雪花算法精度丢失问题了解: 如图:数据库中 风清扬 对应的ID为 1420038345634918401 观察控制台输出的SQL发现页面传递过来的员工id的值和数据库中的id值不一致,这是怎么回事呢? ...

  2. mybatis plus使用雪花算法_11.雪花算法与精度丢失

    最近公司的一个项目组要把以前的单体应用进行为服务拆分,表的ID主键使用Mybatis plus默认 的雪花算法来生成. 快下班的时候,小伙伴跑过来找我,:"快给我看看这问题,卡这卡了小半天了 ...

  3. 雪花算法解决时钟回拨问题

    SnowFlake算法 据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子组成.在雪花形成过程中,会形成不同的结构分支,所以说大自然中不存在两片完全一样的雪花,每一片雪花都拥有自己 ...

  4. mysql snowflake_雪花算法-snowflake

    雪花算法-snowflake 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有 ...

  5. 关于雪花算法id冲突的思考解决思路

    1.背景: 公司的分布式应用部署了多个pod,  利用雪花算法来生成id, 然后用来保存数据, 但是生产上跑久了之后,偶尔间就会出现id碰撞的事情, 出现的概率非常小,但是一出现就会导致该笔业务处理失 ...

  6. 分布式id生成器:彻底解决雪花算法时间回拨问题

    Butterfly 简介 雪花算法是twitter提出的分布式id生成器方案,但是有三个问题,其中前两个问题在业内很常见: 时间回拨问题 机器id的分配和回收问题 机器id的上限问题 Butterfl ...

  7. 雪花算法snowflake分布式id生成原理详解,以及对解决时钟回拨问题几种方案讨论

    文章目录 一.前言 二.雪花算法snowflake 1.基本定义 2.snowflake的优缺点 三.Java代码实现snowflake 1.组装生成id 2.计算最大值的几种方式 3.反解析ID 4 ...

  8. 记一次错误使用雪花算法引起的数据库主键冲突和解决时钟回拨问题

    在分布式系统中,有一些需要使用全局唯一 ID 的场景,这种时候为了防止 ID 冲突可以使用 36 位的 UUID,但是 UUID 有一些缺点,首先他相对比较长,另外 UUID 一般是无序的 有些时候我 ...

  9. 解决 js 对 long 型数据处理丢失精度问题~ 对象映射器和扩展SpringMVC转换器

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!!! 本文介绍的是解决 ...

最新文章

  1. 关于刘冬大侠Spring.NET系列学习笔记3的一点勘正
  2. JQuery中$.ajax()方法参数详解(转)
  3. 老李分享:Web Services 组件 1
  4. 用计算机弹奏hop,关于职称计算机Photohop模拟练习题参考
  5. Mac OS下Tomcat native-APR的安装
  6. 8_python基础—高级变量类型(字符串、列表、元组、字典、集合)
  7. Web API系列之三 基本功能实现
  8. 阿里终面:优秀的代码都是如何分层的?
  9. 策略模式(Strategy)、枚举策略模式
  10. 在相近背景中找圆和直线
  11. mysql数据库中的分组查询语句_详解MySQL中的分组查询与连接查询语句
  12. 开关电源入门1-基本原理
  13. 网上发现一个钓鱼网站,我用 Python 渗透了该网站所有信息
  14. 黑马程序员-随笔-我与程序员
  15. 山东理工大学ACM平台题答案关于C语言 1580 闰年
  16. 开启固定拨号FDN功能,发送信息时如何做FDN检测
  17. 区块链DAO vs. 股份制:生产关系革命的原因和意义
  18. dell服务器主板型号怎么看,我不懂硬件,帮我看看DELL600M的主板是什么型号
  19. 穆迪将收购GCR Ratings多数股权以拓展非洲业务
  20. 解决win7打开网络看不到局域网的其他电脑/计算机

热门文章

  1. VUE === vuex是什么?怎么使用?哪种功能场景使用它?
  2. Qt 渐变(六): 锥形渐变的使用
  3. 大数据技术之Shell
  4. Oracle更新字段属性
  5. 13 行 JavaScript 代码让你看起来像是高手
  6. springboot毕设项目城市天然气管理系统 p355v(java+VUE+Mybatis+Maven+Mysql)
  7. linux 定时执行脚本发送邮件
  8. 计算机应用基础教学总结新老师,计算机应用基础教学总结..doc
  9. Spring Boot 过滤器与拦截器的使用及其区别 和过滤器怎么设置运行顺序
  10. iview ui 全静态表格,增删改查,分页功能