使用Spring的Pageable来实现分页查询

时间:2023-01-16 22:18:22

1.导入包:

import org.springframework.data.domain.Pageable;

2.测试类:

@Test
public void whenQuerySeccess() throws Exception{
mockMvc.perform(
get("/user")
//分页查询参数,第三页,每页15个数据,按照年龄倒序排序
.param("size","15")
.param("page","3")
.param("sort","age,desc")//发送get请求,并带请求参数

.contentType(MediaType.APPLICATION_JSON_UTF8) //编码格式为json的utf8
).andExpect(status().isOk()) //返回的状态码为200 OK
.andExpect(jsonPath("$.length()").value(3)) //判断返回的json长度是否为3
.andReturn().getResponse().getContentAsString();
}

3.controller类:

@RestController
public class UserController {
@GetMapping("/user")
public List<User> query(Pageable pageable){//用spring自带的pageable对象来得到分页信息

System.out.println(pageable.getPageSize());// 15
System.out.println(pageable.getPageNumber()); // 3
System.out.println(pageable.getSort());//age: DESC

List<User> users = new ArrayList<>();
/*
查询操作
*/

return users;
}
}

4.还可以传入默认的Pageable属性(使用@PageableDefault注解)

@RestController
public class UserController {
@GetMapping("/user")
public List<User> query(@PageableDefault(page=2,size=17,sort="username,asc")Pageable pageable){//用spring自带的pageable对象来得到分页信息

System.out.println(pageable.getPageSize());// 17
System.out.println(pageable.getPageNumber()); // 2
System.out.println(pageable.getSort());// username: DESC

List<User> users = new ArrayList<>();
/*
查询操作
*/

return users;
}
}