当我使用雪花算法生成数据库主键时,前端总是拿不到数据。
后来我发现但凡是我定义成Long类型的数据上传到了前端最后两位总是0,由于雪花算法生成的id也设计成了Long类型,看来是发生了精度丢失。
这是由于java的Long类型数据长度大于前端Number类型的数据,所以我们在上传之前只需要把Long类型的数据以String序列化的方式传到前端。
具体代码:
@JsonComponent @Slf4j public class JsonConfig { /** * 添加 Long 转 json 精度丢失的配置 */ @Bean public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); SimpleModule module = new SimpleModule(); module.addSerializer(Long.class, ToStringSerializer.instance); module.addSerializer(Long.TYPE, ToStringSerializer.instance); objectMapper.registerModule(module); return objectMapper; } }
问题解决!!