paging

ํŽ˜์ด์ง•

๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ์ •์˜

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);

์„œ๋น„์Šค์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ

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์—์„œ์˜ ๊ฐ„ํŽธํ•œ ํŽ˜์ด์ง• ์‚ฌ์šฉ

@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๋Š” ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค.

๊ฐœ๋ณ„ ์„ค์ •์œผ๋กœ ์œ„์™€ ๊ฐ™์ด ํŽ˜์ด์ง€์˜ default๊ฐ’์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ค„์–ด๋“œ๋Š” ์ด์ ์ด ์ƒ๊ธด๋‹ค.

Page๋Š” map()์„ ์ง€์›ํ•ด์„œ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

Last updated