spring data jpa limit pagesize,如何设置为maxSize [英] spring data jpa limit pagesize, how to set to maxSize
问题描述
我有一个要求是按可分页和不可分页搜索,
I have one requirement is to search by pageable and non-pageable,
在我的Java代码中,我使用spring data jpa Pageable class,
and in my Java code, I use spring data jpa Pageable class,
Pageable pageable = new PageRequest(
queryForm.getPageNumber()- 1, queryForm.getPageSize(),Sort.Direction.ASC,"id");
Page page = repository.fullTextSearch(queryForm.getText(), pageable);
我不想改变退货结构,
所以当不可分页的情况(全部搜索)时,如何将pageSize值设置为MAX?
So when non-pageable situation (search all), how to set the pageSize value to MAX ?
推荐答案
与Spring MVC一起使用 PageableDefaults
注释 value = Integer.MAX_VALUE
,如
In conjunction with Spring MVC you can use PageableDefaults
annotation with value = Integer.MAX_VALUE
like
public String showUsers(Model model,
@PageableDefaults(pageNumber = 0, value = Integer.MAX_VALUE) Pageable pageable) { … }
参见PageableDefaults annotation Javadoc。
see PageableDefaults annotation Javadoc.
在任何其他客户端代码,您可以将第二个构造函数参数设置为 Integer.MAX_VALUE
:
In any other client code you can set second constructor parameter to Integer.MAX_VALUE
:
new PageRequest(
queryForm.getPageNumber()- 1,
queryForm.getPageSize() == null ? Integer.MAX_VALUE : queryForm.getPageSize(),
Sort.Direction.ASC,"id");
参见 PageRequest构造函数。我假设 queryForm.getPageSize()
是包装类型而不是基元。否则,如果用户未设置pageSize,则会得到零(故意为全部搜索请求)。
see PageRequest constructor. I assume that queryForm.getPageSize()
is a wrapper type not a primitive. Otherwise you get a zero if pageSize wasn't set by the user (intentionally for a "search all" request).
更新:
从Spring Data Commons 1.6开始,您应该使用 PageableDefault
而不是 PageableDefaults
Since Spring Data Commons 1.6 you should use PageableDefault
instead of PageableDefaults
public String showUsers(Model model,
@PageableDefault(page= 2 ,value = Integer.MAX_VALUE)
参见 PageableDefault注释 Javadoc。
See PageableDefault annotation Javadoc.
这篇关于spring data jpa limit pagesize,如何设置为maxSize的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!