问题
当我们使用MyBatis-Plus 使用 ASSIGN_ID(雪花算法) 生成的id作为主键时,因为其长度为19位,而前端一般能处理16位,如果不处理的话在前端会造成精度丢失,最后两位会变成00,感觉像是四舍五入后的效果,如下:
1648981853080055810 => 1648981853080055800
后端处理
@JsonSerialize(using = ToStringSerializer.class)
@TableId
private Long id;
前端处理
前端一般都是用axios进行数据请求,我们通过引入json-bigint来解决:
// 安装依赖
npm install json-bigint
// 使用
import JSONBIG from 'json-bigint'
axios.defaults.transformResponse = [
function (data) {
const json = JSONBIG({
storeAsString: true
})
const res = json.parse(data)
return res
}
]