QueryDSL

QueryDSL 페이징 방법

쿠카이든 2022. 7. 16. 18:56
728x90
QueryDSL 에서의 페이징  ->  offset과 limit를 통해서 페이징을 할 수 있다.

 

  • LIMIT 숫자 : 출력할 행의 수
  • OFFSET 숫자 : 몇번째 row부터 출력할 지. (1번째 row면 0)

 

조회 건수 제한
@Test
public void paging1() {
   List<Member> result = queryFactory
         .selectFrom(member)
         .orderBy(member.username.desc())
         .offset(1) //offset은 0부터 시작(zero index), 현재 코드에서는 1번부터 데이터를 가져오도록 하므로 맨 처음 데이터는 생략됨
         .limit(2) //최대 2건 조회
         .fetch();
   assertThat(result.size()).isEqualTo(2);
}

 

전체 데이터 수가 필요하면? - fetchResults 사용
@Test
public void paging2() {
   QueryResults<Member> queryResults = queryFactory
         .selectFrom(member)
         .orderBy(member.username.desc())
         .offset(1)
         .limit(2)
         .fetchResults();
   assertThat(queryResults.getTotal()).isEqualTo(4);
   assertThat(queryResults.getLimit()).isEqualTo(2);
   assertThat(queryResults.getOffset()).isEqualTo(1);
   assertThat(queryResults.getResults().size()).isEqualTo(2); //getResult -> 컨텐츠 가져오는 메서드
}

 

출처 : 김영한의 '실전! Querydsl' 강의 중 메모(https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard)

728x90