我正在使用Spring在我的应用程序中实现分页,并且endpoits的返回为Page
。该对象返回很多参数。有办法消除其中一些吗?
存储库扩展了JpaRepository
服务
@Autowired
ClientRepositoy clientRepositoy;
public List<Client> findAllList() {
return clientRepositoy.findAll();
}
CONTROLLER
@Autowired
ServiceClient serviceClient;
@GetMapping("/clients")
public Page<Client> getClients() {
List<Client> clients = serviceClient.findAllList();
return new PageImpl<>(convertToDto(clients), PageRequest.of(0, 10), clients.size());
}
JSON返回
{
"content": [
{
"id": 1,
"name": "TEST"
}
],
"pageable": {
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"offset": 0,
"pageNumber": 0,
"pageSize": 10,
"paged": true,
"unpaged": false
},
"totalPages": 1,
"totalElements": 7,
"last": true,
"size": 10,
"number": 0,
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"first": true,
"numberOfElements": 7,
"empty": false
}
我想删除整个Pageable对象,例如:
"pageable": {
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"offset": 0,
"pageNumber": 0,
"pageSize": 10,
"paged": true,
"unpaged": false
},
答案 0 :(得分:0)
所以我们在响应中使用了一个无法修改的类
我们可以使用mixin。
如果创建了ObjectMapper bean,则可以指定您的mixin,它将在序列化期间使用。
它看起来像下面的代码。
mixin设置吸气剂的可见性。它将在序列化期间使用:
public interface PageImplMixin {
@JsonIgnore
Pageable getPageable();
}
自己的对象映射器bean,配置为在将pageimpl类序列化时使用我们的mixin:
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper().setMixIns(Map.of(PageImpl.class, PageImplMixin.class));
}
}
一些了解概念的链接:
JacksonMixInAnnotations Mix-In Annotations to reuse, decouple