js中Number类型只能接收16位以内的数字,而雪花算法形成的数字为19位,在页面获取用户雪花算法形成的Long类型id等其他数据时在js处理后会发生精度丢失的情况(后两位为0,即进行了四舍五入),这时在进行数据库操作时,需要先将其转化为字符串类型,并不再使用springMVC默认的消息转换器。
1:配置对象转换器
其中有对数据类型的转化和对时间格式进行了处理
@Component
public class ObjectConverterMapper extends ObjectMapper {
public ObjectConverterMapper() {
SimpleModule simpleModule = new SimpleModule()
//将BigInterger类型转为字符串
.addSerializer(BigInteger.class, ToStringSerializer.instance)
//将Long类型转为字符串
.addSerializer(Long.class, ToStringSerializer.instance);
this.registerModule(simpleModule);
}
}
2:在WebMvcConfig中配置扩展的消息转换器
配置自己的消息转换器来使其最先执行
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
messageConverter.setObjectMapper(new ObjectConverterMapper());
//将自己配置的转换器的优先级设置为最高
converters.add(0,messageConverter);
}
}
之后就可以由Long类型的数据对数据库中的数据进行处理