LIMIT
구문은 데이터를 원하는 만큼 가져오고 싶을 때 사용limit 3,2
: 3번째 데이터부터 두 개를 가져오겠다 (3번째, 4번째 데이터 가져옴)page
와 size
가 주어졌을 때 SELECT * FROM table LIMIT (page-1)*size, size
사용예제:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Page<User> findAll(Pageable pageable);
//findAllByOrderByUserIdDesc(Pageable pagaeble); userId기준 내림차순으로 바로 받아올수도 있다.
}
Page
: Pagination 에 필요한 정보를 담는 객체, 요청받은 데이터들 외에 전체페이지수, 현재페이지번호 등 여러 부가정보를 담고있다page
와 size
가 오면 다음과 같은 방법으로 Pageable 객체를 만들 수 있다.// PageRequsst 메서드 정의
public static PageRequest of(int page, int size, Sort sort) {
return new PageRequest(page, size, sort);
}
//PageRequest 사용예제
public Page<Member> findMembers(int page, int size) {
return memberRepository.findAll(PageRequest.of(page, size,
Sort.by("memberId").descending()));
}
//Controller에서 page, size 받아와서 findMembers 호출 page는 0부터 시작이기 때문에 page -1
// Page 객체의 getContent를 호출해 실제 데이터를 받아오기(추후에 DTO객체로 전환)
public ResponseEntity getMembers(@Positive @RequestParam int page,
@Positive @RequestParam int size) {
Page<Member> pageMembers = memberService.findMembers(page - 1, size);
List<Member> members = pageMembers.getContent();