后端传Long类型的值给前端vue,导致精度丢失为问题的解决
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue

·
后端传Long类型的值给前端vue,导致精度丢失为问题的解决
数据设计使用bigint类型作为主键,Java后台使用Long类型进行接收。
在前端vue中调用后端的通过id查询方法,进行对数据库中的数据查询时,发现后端查询不到数据,后经发现:用psotman对后端的查询服务进行测试,无问题。
查看前端vue获取的数据id时,发现获取的数据id和数据库中的数据的ld不一致。所以才会导致查询查不到数据
由此引导出下面的问题:
javascript的 Number类型最大长度是17位;mysql使用bigint类型长度是20位;
解决办法:配置一个配置类。用于Java传值给前端进行JSON序列化时,将Long类型转成string类型序列化。
@Configuration
@EnableWebMvc
public class CustomJsonConfiguration implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
/**
* 序列换成json时,将所有的long变成string
* 因为js中得数字类型不能包含所有的java long值
*/
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}
}




vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:17 天前 )
9e887079
[skip ci] 11 个月前
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 1 年前
更多推荐
所有评论(0)