API 的 Spring 分页

问题描述 投票:0回答:1

我有一个使用 Java 的 Spring Boot 项目。在前端我只使用 HTML、Bootstrap 和 Thymeleaf。我在那里创建了一个搜索栏,并将其连接到搜索控制器。搜索到的数据来自私有API。

现在我想不使用滚动条而是在多个页面上显示找到的结果。为此,我还选择了 Bootstrap 模板并将其集成。 (查看)

但现在我必须实现后端、模型和控制器。我的问题是:我对 Java Spring 还很陌生,因此正在寻找教程或解释如何实现它。我只找到数据来自数据库而不是 API 的教程。在我的 API 中,分页数据如下所示:

我不想在这里有一个预先咀嚼的解决方案,只是一个解释,也许是一个例子,因为正如我所说,我找不到可以遵循的例子。我完全不知道如何实现控制器来控制分页,以便当我单击“第一页”、“下一页”、“最后一页”按钮时它会跳转到它们。

有人有一个例子和解释我如何自己做吗?

期待您的答复

为了自己解决问题,我已经搜索了教程,浏览了 Spring 上的 Udemy 课程,询问了 ChatGPT。

java spring model-view-controller pagination
1个回答
0
投票

您需要的解决方案将取决于您的表格的复杂程度,即您是否具有过滤和排序功能? 从示例中您可以看出,只需要服务器端分页,无需任何过滤和排序。

我会将 Pageable 与内置 Spring Data JPA 方法一起使用,例如存储库中的

findAll()

我要做的是首先创建一个控制器来请求数据。

   @GetMapping("/data")
    public Page<Data> getDataWithPagination(
            @RequestParam(defaultValue = "0") int page,
            @RequestParam(defaultValue = "10") int size) {
        return yourService.findPaginatedData(PageRequest.of(page, size));
    }

PageRequest.of(page, size))
Pageable
的实例,您可以在此处定义当前页面以及您希望每个页面的大小。如果您想在分页中包含排序,您也可以在此处添加它。

接下来创建您的存储库

public interface YourRepository extends PagingAndSortingRepository<Data, Long> {
    Page<Data> findAll(Pageable pageable);
}

然后从您的服务中调用这个

findAll()
方法。

@Service
public class YourService {

    @Autowired
    private YourRepository yourRepository; 

    public Page<Data> findPaginatedData(Pageable pageable) {
        return yourRepository.findAll(pageable);
    }
}

这就是您开始所需的全部内容。如果您想要更复杂,我建议您研究将规范传递到您的

findAll()
方法中,并通过条件生成器进行一些过滤。

© www.soinside.com 2019 - 2024. All rights reserved.