问题发现:
Number精度是16位(雪花ID是19位的)
前端的Number数据类型导致的精度丢失。
解决方法:
1.Long改为String类型
2.就是注解 推荐在VO层写上
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value="工作人员展示信息")
public class AdminShowVO {
@ApiModelProperty(value = "uuid")
@TableId("pk_id")
@NotNull
@JsonFormat(shape = JsonFormat.Shape.STRING) //@JsonFormat 用来表示json序列化的一种格式或者类型,shap表示序列化后的一种类型
private Long pkId;
@ApiModelProperty(value = "角色名")
@TableField("role_name")
@NotBlank
private String roleName;
}
如果一个一个加太麻烦了
我们整一个全局的
/**
* @Description 格式化时间 配置全局long=>string
* @Author 张三
* @Date 2022/5/5 10:54
*/
@Configuration
public class LocalDateTimeSerializerConfig {
@Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
private String pattern;
@Bean
public LocalDateTimeSerializer localDateTimeDeserializer() {
return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
}
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
//对日期处理 格式化时间
return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer())
//long=>string 对于ObjectMapper做处理处理
.serializerByType(Long.class, ToStringSerializer.instance)
.serializerByType(Long.TYPE, ToStringSerializer.instance);
}
}
效果展示: