spring mvc에서 spring data jpa가 제공하는 페이징&정렬 기능 활용
1. 사용예시
@GetMapping("/members")
public Page<MemberDto> list(@PageableDefault(size = 5) Pageable pageable) {
Page<Member> page = memberRepository.findAll(pageable);
Page<MemberDto> res = page.map(member -> new MemberDto(member));//dto로 변환
return res;
}
2. 페이징 관련 기본값 설정
spring.data.web.pageable.default-page-size=20 /# 기본 페이지 사이즈/
spring.data.web.pageable.max-page-size=2000 /# 최대 페이지 사이즈/
@RequestMapping(value = "/members_page", method = RequestMethod.GET)
public String list(@PageableDefault(size = 12, sort = “username”,
direction = Sort.Direction.DESC) Pageable pageable) {
...
}
3. DTO로 변환하여 내보내기
@Data
public class MemberDto {
private Long id;
private String username;
public MemberDto(Member m) {
this.id = m.getId();
this.username = m.getUsername();
}
}
@GetMapping("/members")
public Page<MemberDto> list(Pageable pageable) {
Page<Member> page = memberRepository.findAll(pageable);
Page<MemberDto> pageDto = page.map(MemberDto::new);
return pageDto;
}
Page를 1부터 시작하기
- 필요시 Pageable, Page를 파라미터/응답값으로 그대로 사용하지말고 직접 클래스 만들어서 처리하거나 파라미터로 넘어오는 인덱스를 아예 1부터 사용하도록 설정할 수는 있음
- 가급적 권장 x