项目场景:
在mybatis-puls中,在实体属性是Long类型数据时,向前端传输数据时,会导致数据后几位不精准,导致数据丢失。
问题描述
例如:在实体中,id为long类型,采用雪花算法作为主键插入,但在传递到前端时,后几位被取0了,导致主键id数据不正确,无法查询该主键数据。
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
原因分析:
后台传输到前台时,由于long类型数据长度,被前端近似了,导致后几位取0
解决方案:
添加@JsonSerialize(using= ToStringSerializer.class)注解,当数据绑定时,将long类型数据转换成字符串
@JsonSerialize(using= ToStringSerializer.class)
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;