ํ์ด์ง
๋ฆฌํฌ์งํ ๋ฆฌ ๋ฉ์๋ ์ ์
Copy Page<Member> findByUsername(String name, Pageable pageable); //count ์ฟผ๋ฆฌ ์ฌ์ฉ
Slice<Member> findByUsername(String name, Pageable pageable); //count ์ฟผ๋ฆฌ ์ฌ์ฉ ์ํจ
List<Member> findByUsername(String name, Pageable pageable); //count ์ฟผ๋ฆฌ ์ฌ์ฉ ์ํจ
List<Member> findByUsername(String name, Sort sort);
์๋น์ค์์ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฉ์๋ ์ฌ์ฉ
Copy PageRequest pageRequest = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC,"username"));
Page<Member> page = memberRepository.findByUsername("who", pageRequest);
List<Member> content = page.getContent();
count์ฟผ๋ฆฌ๋ ๋ฌด๊ฒ๊ฒ ๋์ํ๋ค๋ ์ ์ ๋
์์ธํ ๋ฉ์๋๋ Page์ Slice ์ธํฐํ์ด์ค๋ฅผ ํ์ธ
Spring MVC์์์ ๊ฐํธํ ํ์ด์ง ์ฌ์ฉ
Copy @GetMapping("/members")
public Page<Member> list(Pageable pageable) {
Page<Member> page = memberRepository.findAll(pageable);
return page;
}
Pageable์ ์ธํฐํ์ด์ค์ด๊ณ , pageable์ด ๋ฐ๋ ๊ฐ์ฒด๋ ์ค์ ๋ก๋ org.springframework.data.domain.PageRequest์ด๋ค.
์์ฒญ ํ๋ผ๋ฏธํฐ
์์) /members?page=0&size=3&sort=id,desc&sort=username,desc
page: ํ์ฌ ํ์ด์ง, 0๋ถํฐ ์์ํ๋ค.
size: ํ ํ์ด์ง์ ๋
ธ์ถํ ๋ฐ์ดํฐ ๊ฑด์
sort: ์ ๋ ฌ ์กฐ๊ฑด์ ์ ์ํ๋ค. ์ ๋ ฌ ๋ฐฉํฅ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ผ๋ฉด sort ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ๋ค. asc๋ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
Copy @RequestMapping(value = "/members_page", method = RequestMethod.GET)
public String list(@PageableDefault(size = 12, sort = โusernameโ, direction = Sort.Direction.DESC) Pageable pageable) {
...
}
๊ฐ๋ณ ์ค์ ์ผ๋ก ์์ ๊ฐ์ด ํ์ด์ง์ default๊ฐ์ ์ค ์ ์๋ค.
์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ผ๋ฏธํฐ๊ฐ ์ค์ด๋๋ ์ด์ ์ด ์๊ธด๋ค.
Page๋ map()์ ์ง์ํด์ ๋ด๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
Copy @Data
public class MemberDto {
private Long id;
private String username;
public MemberDto(Member m) {
this.id = m.getId();
this.username = m.getUsername();
}
}
Copy // Java
@GetMapping("/members")
public Page<MemberDto> list(Pageable pageable) {
return memberRepository.findAll(pageable).map(MemberDto::new);
}
Copy // Kotlin
@GetMapping("/members")
fun list(pageable: Pageable): Page<MemberDto>{
return memberRepository.findAll(pageable).map(MemberDto(it));
}