解决Long类型精度丢失问题
** 今天发现删除时前端传过来的ID参数不对,数据并没有删掉。
但是这个传过来的ID参数 很奇怪,数据库中并没有这个ID,查询时传过去的ID 也并不是这个。**
于是我去看查询方法,(这时离解决bug的脚步越来越近了)
在查询方法中,我传到前端的ID是1668450124026482768,并且这个ID与数据库的ID是一致的。
这是后端返回的数据
这是前端接收到的数据
后来想到应该是Long类型精度丢失问题。因为后面几个都是0。
那么如何解决这个问题呢?
可以用@JsonSerialize(using = ToStringSerializer.class)注解。
这是一个自定义序列化器,这个注解的意思是:告诉JSON库,在序列化该对象时,使用ToStringSerializer类作为序列化器,ToStringSerializer是Jackson库中的一个默认序列化器,它将指定的字段转化为toString()方法的返回值,并将其作为JSON字符串的值。
如此就可以解决Long类型精度丢失问题。
@Getter
@Setter
@TableName("SEED_UNITSETUP")
public class SeedUnitSetup {
/** 主键 */
@TableId(value ="id",type = IdType.AUTO)
@ApiModelProperty(value = "主键", position = 1)
@JsonSerialize(using = ToStringSerializer.class)//解决long类型精度丢失问题
private Long id;
那么此时,前端接收到的数据就正确了。我的删除和编辑bug也随之解决~