我的目标是根据需要为任何列表创建分页,例如下面的列表为 1000 个项目,我想生成一个分页,将项目作为页码、项目数量返回......和其他人在任何分页上添加共享资源。我该怎么做?知道一个可以帮助我的图书馆吗?我将在 Spring 框架下的 REST API 中使用它。
包含多个元素的任何列表
public List<Integer> anyList() {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
//list.add(...) ;
list.add(1000);
return list;
}
正如@Jason所建议的,请参考他提到的spring-data-jpa
参考资料,并遵循spring-data-jpa
的分页指南,这是最受欢迎的方式。但是,如果您有来自任何其他数据源的数据,并且在您想对该项目列表进行分页之后,请使用 SpringPageListHolder<?>
找到我的解决方案,如下所示:
在控制器中添加测试数据
public static final List<String> names = new ArrayList<>();
static {
for (int i = 0; i < 100; i++) {
names.add("Name #" + i);
}
}
分页项目如下:
@GetMapping(value = "/names", produces = MediaType.APPLICATION_JSON_VALUE)
public Page<String> names(@RequestParam(name = "page") Integer page,
@RequestParam(name = "size") Integer size) {
PagedListHolder<String> pages = new PagedListHolder<>(names);
pages.setPage(page);
pages.setPageSize(size);
return new PageImpl<>(pages.getPageList());
}
PageListHolder 是从主源列表中提取subList
的实际类,也请查看它的源代码。而不是每次都希望将其保留为单独的数据源类并继续查询时创建 PageListHolder 的新实例。