提问者:小点点

任何列表中的分页<?>Java


我的目标是创建一个我想要的任何列表的分页,通过例子下面的列表为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;
    }

共1个答案

匿名用户

正如@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的新实例,您希望将其保留为单独的数据源类并保持查询。