728x90
์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ํ์ด์ง๊ณผ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์คํ๋ง MVC์ ํจ๊ป ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
http ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ์๋์ผ๋ก Pageable ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฃผ๋๋ฐ ๋ค์์ ๊ทธ ์์์ ๋๋ค.
@GetMapping("/members")
public Page<Member> list(Pageable pageable) {
Page<Member> page = memberRepository.findAll(pageable);
return page;
}
ํ๋ผ๋ฏธํฐ๋ก Pageable ์ ๋ฐ์ ์ ์์ต๋๋ค.
์ค์ ํ ๋น๋๋ ๊ฐ์ฒด๋ PageRequest(org.springframework.data.domain.PageRequest) ์
๋๋ค.
์์ฒญ ํ๋ผ๋ฏธํฐ ํ์
?page=2&size=3&sort=id,desc&sort=username,desc
- page: ์กฐํํ ํ์ด์ง์ ๋ฒํธ์ ๋๋ค. 0๋ถํฐ ์์ํฉ๋๋ค
- size: ํ ํ์ด์ง์ ๋ ธ์ถํ ๋ฐ์ดํฐ ๊ฑด์๋ฅผ ์ง์ ํฉ๋๋ค.
- sort: ์ ๋ ฌ ์กฐ๊ฑด์ ์ ์ํฉ๋๋ค.
- ์ ๋ ฌ ์์ฑ์ ์ปด๋ง๋ก ๊ตฌ๋ถํฉ๋๋ค.
- sort=์์ฑ,๋ฐฉํฅ(asc, desc)
๊ธฐ๋ณธ๊ฐ
๊ธ๋ก๋ฒ ์ค์ (application.properties)
spring.data.web.pageable.default-page-size=20 /# ๊ธฐ๋ณธ ํ์ด์ง ์ฌ์ด์ฆ/
spring.data.web.pageable.max-page-size=2000 /# ์ต๋ ํ์ด์ง ์ฌ์ด์ฆ/
๊ฐ๋ณ ์ค์
@PageableDefault ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํฉ๋๋ค.
@RequestMapping(value = "/members_page", method = RequestMethod.GET)
public String list(
@PageableDefault(
size = 12,
sort = “username”,
direction = Sort.Direction.DESC
)Pageable pageable) {
...
}
ํ์ด์ง ์ ๋ณด๊ฐ ๋ ์ด์์ธ ๊ฒฝ์ฐ
์ ๋์ฌ๋ก ๊ตฌ๋ถํฉ๋๋ค.
@Qualifier ์ ์ ๋์ฌ๋ช ์ถ๊ฐ "{์ ๋์ฌ๋ช }_XXX” //XXX์๋ page๋ sort๋ฑ์ด ์ฌ ์ ์๋ค.
์์ : /members?member_page=0&order_page=1
public String list(
@Qualifier("member") Pageable memberPageable,
@Qualifier("order") Pageable orderPageable, ...
๊ทธ๋ฌ๋ ๋ณต์กํ ๊ฒฝ์ฐ์๋ sort ์กฐ๊ฑด์ ๋ณ๋๋ก ๋๊ธฐ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Reference
728x90
'๐๏ธ Spring > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Data JPA] LocalDateTime ์ฌ์ฉ์ DB์ ์ ์ฅ๋๋ format ์ค์ ํ๊ธฐ (2) | 2022.07.29 |
---|---|
[Spring Data JPA] Persistable - ์๋ก์ด ์ํฐํฐ ํ๋ณ ์ฌ๋ถ ์ค์ (2) | 2022.07.29 |
[Spring Data JPA] JPA ํ์ฅ ๊ธฐ๋ฅ - ๋๋ฉ์ธ ํด๋์ค ์ปจ๋ฒํฐ (2) | 2022.07.28 |
[Spring Data JPA] Auditing (0) | 2022.07.28 |
[Spring Data JPA] ์ฌ์ฉ์ ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํํ๊ธฐ (0) | 2022.07.28 |