前端获取的Long类型数据失真,后端这样处理就行了

数据库表id一边定义为Long类型,对应数据库类型为bigint。
我这边的情况是,数据库的id虽然是自增,但一开始因为一些原因,起始值特别特别大,java后端处理过程中没有什么问题,也不会出现失真。
但是,前端获取的对应字段,最后两位变成00,失真了两位。我自己通过swagger里面测试查看到的返回值也是如此。但是,在postman里面测试的返回值确实正确的,postman厉害了。

对此,想到的肯定是把long类型转换成字符串输出。因为项目用到了DDD领域驱动设计,所以只改输出对象就可以,接受时的DTO和数据库对应的Entity对象完全不受影响。
故此,在输出对象VO的Long类型字段上方编注@JsonFormat注解,输出转换为字符串类型,可以保证数据的不知真。

  @JsonFormat(shape = JsonFormat.Shape.STRING)
   @ApiModelProperty(value = "主键",example = "0")
   private Long id;

另外,网上有其他方法也可以试试。
我这边还有一个小插曲,就是接受前端的服务输出对象VO和后端处理请求接受的VO,虽然是同一个对象,同一种类型,但是接受前端服务和后端很是处理请求是两个服务,一开始只修改了后端处理请求并返回VO的服务对应的VO,并重启,结果一直测试不成功。
后面将后端处理请求的VO所在module install一下,重启接受前端请求的服务,就可以了。

猜你喜欢

转载自blog.csdn.net/qq_41885819/article/details/116009847
今日推荐