问题描述:
使用oracle时,自增id太长,实体类使用Long接收,数据库数据和前台展示数据不一致,精度丢失。
原因:
java中的long能表示的范围比js中number大,也就意味着部分数值在js中存不下(变成不准确的值);
解决:
只要在传入之前将数字转换为字符串即可。
推荐方案二。
方案一:
在要转换的实体类加注解@JsonFormat。
缺点是只能转换一个字段,多的话比较麻烦。
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long Id;
方案二:
使用springboot主配置文件,强制将所有数字全部转成字符串输出。
application.yml:
spring:
jackson:
generator:
write_numbers_as_strings: true
方案三:
使用配置类,未测试。
@Configuration
public class JacksonConfig {}