SpringのPageableを使用してページングクエリを実装

3813 ワード

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 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 users = new ArrayList<>();
        /*
                
        */
        return users;
    }
}

4.デフォルトのPageable属性を入力することもできます(@PageableDefault注記を使用)
@RestController
public class UserController {
    @GetMapping("/user")
    public List 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 users = new ArrayList<>();
        /*
                
        */
        return users;
    }
}