【问题标题】:Spring Boot Pagination with DTO returned in response带有 DTO 的 Spring Boot 分页作为响应返回
【发布时间】:2021-01-25 13:28:11
【问题描述】:

我有一个带有 @RestController 的 Spring Boot 应用程序,其中我有一个 @GetMapping 方法,在该方法中,我将来自本机查询的 DTO 列表返回给我的客户端。 现在我想添加分页。

但是由于我的方法不是返回实体而是返回 DTO,其中包含三个相关实体的字段,因此我很难找到合适的方法来执行此操作。我已经尝试过一些有类似问题的人的方法,但没有一个对我有帮助,而且我认为其中很多都被弃用了。

所以我的问题是:如何将 DTO 类型的页面返回到我的前端?本机查询返回一个 DTO 类型的列表。

【问题讨论】:

  • 那么您是否希望在您的 api 响应中返回页面而不是列表?
  • 是的,但是页面必须手动构建和填充,因为我的查询结果是由本机查询生成的。
  • 您可以尝试使用Pageable and countQuery

标签: spring spring-data-jpa pagination paging dto


【解决方案1】:

由于您使用的是本机查询,因此您可以让前端返回 pageIndex 和 pageSize,例如对于第一组结果 pageIndex = 0 和 pageSize = 50,对于下一组结果 pageIndex = 1 和 pageSize = 50。 您可以使用以下本机查询。

SELECT name ,address FROM users OFFSET (pageIndex * pageSize) ROWS FETCH NEXT pageSize ROWS ONLY

【讨论】:

  • 您好,谢谢您的回答!我将查询从 Native 更改为 JPQL,现在我正在使用自定义存储库 Impl 来实现我的查询。您能告诉我如何实现与我之前询问的内容等效的 JPQL 吗?我也可以只返回类型对象的分页/有限列表,但它不能是类型对象的页面,因为我使用 DTO 构造函数在从数据库中获取对象后转换对象,然后公开 DTO在 API 中。我希望你能理解我在这里试图解释的内容。
猜你喜欢
  • 2019-07-27
  • 2016-07-23
  • 2022-01-23
  • 2019-03-09
  • 2017-12-04
  • 2018-11-07
  • 1970-01-01
  • 2021-05-25
  • 2022-10-04
相关资源
最近更新 更多