SpringMVC分页和排序

使用org.springframework.data.domain.Pageable接口类型作为入参即可实现查询列表的分页和排序,见下面例子:

@RequestMapping(value = "blogs", method=RequestMethod.GET)
public Page getEntryByPageable(@PageableDefault(value = 15, sort = { "id" }, direction = Sort.Direction.DESC) 
    Pageable pageable) {
    return blogRepository.findAll(pageable);
}

当Spring发现这个参数时,会自动的根据request的参数来组装该pageable对象,Spring支持的request参数如下:

  • page,第几页,从0开始,默认为第0页
  • size,每一页的大小,这里设置为15
  • sort,排序相关的信息,以property,property(,ASC|DESC)的方式组织,例如sort=firstname&sort=lastname,desc表示在按firstname正序排列基础上按lastname倒序排列

结果如下:

{
  "content":[
    {"id":123,"title":"blog122","content":"this is blog content"},
...
    {"id":109,"title":"blog108","content":"this is blog content"}],
  "last":false,
  "totalPages":9,
  "totalElements":123,
  "size":15,
  "number":0,
  "first":true,
  "sort":[{
    "direction":"DESC",
    "property":"id",
    "ignoreCase":false,
    "nullHandling":"NATIVE",
    "ascending":false
  }],
  "numberOfElements":15
}

上述json字段说明如下:

  • content: 以id倒序排列的15条数据
  • last: 当前页不是最后一页,后面还有数据
  • totalPages: 总共有9页
  • size: 每页大小为15
  • number: 当前页为第0页
  • first: 当前页是第一页
  • sort: 当前页是以id倒序排列的
  • numberOfElements: 当前页一共有15条数据

参考

  1. 整合Spring Data JPA与Spring MVC: 分页和排序

你可能感兴趣的:(SpringMVC分页和排序)