gpt4 book ai didi

java - 如何返回仅包含短页面信息的分页代码?

转载 作者:行者123 更新时间:2023-11-30 01:51:32 24 4
gpt4 key购买 nike

我正在使用 Hibernate、JPA 和 Spring,我想返回一个带有分页贷款的 json。我希望页面信息简单,只有页面、大小和总数,如下所示:

{
"items":[
{
“id”: 1,
“total”: 2500.00
“user_id”: 1
},
{
“id”: 2,
“total”: 65120.75
“user_id”: 1
}
],
"paging":{
"page": 1,
"size": 50,
"total": 1500
}
}

我有一个用于贷款的 JPA 存储库。

这就是我的 Controller 现在的样子:

@RestController
@RequestMapping("/loans")
public class LoansController {

@Autowired
private UserLoansRepository loansRep;

@GetMapping(params = { "page", "size" })
public Page<UserLoansEntity> findPaginated(@RequestParam("page") int page,
@RequestParam("size") int size) {

Pageable pages = PageRequest.of(page, size);
Page<UserLoansEntity> resultPage = loansRep.findAll(pages);

return resultPage;
}
}

我得到的是这个:

{
"content": [
{
"idLoan": 10,
"total": 222
},
{
"idLoan": 11,
"total": 3333
},
{
"idLoan": 12,
"total": 3333.33
}
],
"pageable": {
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"pageSize": 3,
"pageNumber": 0,
"offset": 0,
"unpaged": false,
"paged": true
},
"last": false,
"totalPages": 2,
"totalElements": 5,
"first": true,
"sort": {
"sorted": false,
"unsorted": true,
"empty": true
},
"numberOfElements": 3,
"size": 3,
"number": 0,
"empty": false
}

有什么帮助吗?

最佳答案

如果您将实体映射到可以从 API 返回的 DTO 对象,这可能会有所帮助。

您可以手动映射属性或使用对象映射库(例如 Orika、Jackson)。只是给您一个粗略的想法:

PageDto pageDto = new PageDto();
pageDto.setPage(resultPage.getPageable().getPageSize());
pageDto.setSize(resultPage.getPageable().getPageNumber() + 1);
pageDto.setTotal(resultPage.getTotalElements());

pagedResponseDto.setPaging(pageDto);
pagedResponseDto.setItems(pageDto.getContent());

其中,PageDtoPagedResponseDto 的位置(大致):

class PageDto {

private Integer page;
private Integer size;
private Integer total;
}
class PagedResponseDto<T> {

private List<T> items;
private PageDto pageDto;
}

这不仅可以帮助您实现目标,而且也是保持 API 层中的 Bean 与域表示解耦的良好实践。

关于java - 如何返回仅包含短页面信息的分页代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com