使用Mybatis Plus的雪片算法作为主键导致精度丢失问题

       今天碰到一个很奇怪的问题:后端返回的数据中ID字段数据对应不上,数据库和前端得到的数据不一致,debug了下,原因是js解析json数据时,Long类型是用Number接收,Number最多是16位,所以导致后面几位的数据丢失,查了下几种解决方案,最终使用如下解决方案:Long类型使用json解析时用String类型解析,只需要自定义配置下Json的配置信息即可,配置信息如下:

@Configuration

public class JacksonConfig {

@Bean

@Primary

  @ConditionalOnMissingBean(ObjectMapper.class)

public ObjectMapperjacksonObjectMapper(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;

  }

}

补充:

注意使用上面方法可能会对前端逻辑有影响,我这样操作后,有前端页面会提示需要字符串类型转数字类型,所以还是需要谨慎一些。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。