목차
참고 https://docs.spring.io/spring-data/jpa/docs/1.7.0.DATAJPA-580-SNAPSHOT/reference/html/auditing.html
Paging Request Paramater
Page 와 Size 를 사용해 Paging 과 관련한 Request Parameter 요청을 보낼 수 있다.
Page
Size
Paging 할 데이터 크기
Default Size = 20 이다.
@GetMapping("/members") public Page<Member> list (Pageable pageable) { Page<Member> page = memberRepository.findAll(pageable); return page; }
Paramater 를 이용해 요청 보내기 # 0번 페이지에 해당하는 데이터들을 모두 가져온다. http://localhost:8080/members?page=0 # 1번 페이지에 해당하는 데이터들을 모두 가져온다. http://localhost:8080/members?page=1 # 전체 데이터를 size에 맞춰서 Paging하고 0번 페이지에 해당하는 데이터를 가져온다. http://localhost:8080/members?page=0&size=3
Default Paging 설정 변경하기 Global(전역적) 으로 Paging 설정 propertiy를 이용해 Paging Size와 최대 Page의 개수를 설정할 수 있다.
spring.data.web.pageable.default-page-size : Paging Size 의 크기를 설정한다.
spring.data.web.pageable.max-age-size : Paging 의 최대 개수를 설정한다.
spring: data: web: pageable: default-page-size: 10 max-page-size: 2000
지역적으로 Paging 설정 PageableDefault 어노테이션을 이용해 기본적인 Page , Size , Sort 를 설정할 수 있다.
@GetMapping("/members") public Page<Member> list (@PageableDefault(size = 5, sort = "username") Pageable pageable) { Pageable requestPaging = pageable; Page<Member> page = memberRepository.findAll(pageable); return page; }
Paging 내용을 DTO로 변환 Method Reference로 변형하기 @Data public class MemberDto { private Long id; private String username; private String teamName; public MemberDto (Long id, String username, String teamName) { this .id = id; this .username = username; this .teamName = teamName; } public MemberDto (Member member) { this .id = member.getId(); this .username = member.getUsername(); } }
@GetMapping("/members") public Page<MemberDto> list (@PageableDefault(size = 5, sort = "username") Pageable pageable) { Page<Member> page = memberRepository.findAll(pageable); Page<MemberDto> map = page .map(member -> new MemberDto (member.getId(), member.getUsername(), null )); return map; }
@GetMapping("/members") public Page<MemberDto> list (@PageableDefault(size = 5, sort = "username") Pageable pageable) { Page<MemberDto> map = memberRepository.findAll(pageable) .map(MemberDto::new ); return map; }