我有一个要求是按可分页和不可分页进行搜索,
在我的 Java 代码中,我使用 spring data jpa Pageable 类,
Pageable pageable = new PageRequest(
queryForm.getPageNumber()- 1, queryForm.getPageSize(),Sort.Direction.ASC,"id");
Page page = repository.fullTextSearch(queryForm.getText(), pageable);
而且我不想改变返回结构,
那么当不可分页的情况下(搜索所有),如何将pageSize值设置为MAX?
最佳答案
结合 Spring MVC,您可以使用 PageableDefaults
注释和 value = Integer.MAX_VALUE
,例如
public String showUsers(Model model,
@PageableDefaults(pageNumber = 0, value = Integer.MAX_VALUE) Pageable pageable) { … }
参见 PageableDefaults annotation Javadoc.
在任何其他客户端代码中,您可以将第二个构造函数参数设置为 Integer.MAX_VALUE
:
new PageRequest(
queryForm.getPageNumber()- 1,
queryForm.getPageSize() == null ? Integer.MAX_VALUE : queryForm.getPageSize(),
Sort.Direction.ASC,"id");
参见 PageRequest constructor .我假设 queryForm.getPageSize()
是包装器类型而不是原始类型。否则,如果用户未设置 pageSize(有意用于“搜索所有”请求),您将得到一个零。
更新:
从 Spring Data Commons 1.6 开始,您应该使用 PageableDefault
而不是 PageableDefaults
public String showUsers(Model model,
@PageableDefault(page= 2 ,value = Integer.MAX_VALUE)
参见 PageableDefault annotation Javadoc.
关于java - spring data jpa limit pagesize,如何设置为maxSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23751193/