728x90

paging 4

QueryDSL 페이징 방법

QueryDSL 에서의 페이징 -> offset과 limit를 통해서 페이징을 할 수 있다. LIMIT 숫자 : 출력할 행의 수 OFFSET 숫자 : 몇번째 row부터 출력할 지. (1번째 row면 0) 조회 건수 제한 @Test public void paging1() { List result = queryFactory .selectFrom(member) .orderBy(member.username.desc()) .offset(1) //offset은 0부터 시작(zero index), 현재 코드에서는 1번부터 데이터를 가져오도록 하므로 맨 처음 데이터는 생략됨 .limit(2) //최대 2건 조회 .fetch(); assertThat(result.size()).isEqualTo(2); } 전체 데이터 수..

QueryDSL 2022.07.16

페이징과 정렬(feat.queryDSL)

QItem item = QItem.item; query.from(item) .where(item.price.gt(20000) .orderBy(item.price.desc(), item.stockQuantity.asc()) .offset(10).limit(20) .list(item); 정렬은 orderBy를 사용하는데 쿼리 타입(Q)이 제공하는 asc(), desc()를 사용한다. 페이징은 offset과 limit을 적절히 조합해서 사용하면 된다. 실제 페이징 처리를 하려면 검색된 전체 데이터 수를 알아야 한다. 이때는 list() 대신에 아래 예제와 같이 listResults()를 사용한다. SearchResults result = query.from(item) .where(item.price.gt(10..

QueryDSL 2022.06.17

페이징 API

JPA는 페이징을 다음 두 API로 추상화했다. setFirstResult(int startPosition): 조회 시작 위치(0부터 시작한다) setMaxResults(int maxResult): 조회할 데이터 수 TypedQuery query = em.createQuery("SELECT m FROM Member m ORDER BY m.username DESC", Member.class); query.setFirstResult(10); query.setMaxResults(20); query.getResultList(); 위 코드를 분석하면 FirstResult의 시작은 10이므로 11번째부터 시작해서 총 20건의 데이터를 조회한다. 따라서 11~30번 데이터를 조회한다. 또한, 데이터베이스마다 다른 페..

JPA 2022.06.15
728x90