결과 조회
fetch(): 리스트 조회, 데이터 없으면 빈 리스트를 반환한다
fetchOne(): 단건 조회
-> 결과가 없으면: null
-> 결과가 둘 이상이면 :com.querydsl.core.NonUniqueResultException 예외 발생
fetchFirst(): limit(1).fetchOne(), 처음 한 건을 조회한다
fetchResults(): 페이징 정보 포함, total count 쿼리 추가 실행
fetchCount(): count 쿼리로 변경해서 count 수 조회
내림차순,오름차순
nulls last: 데이터가 없을때 마지막으로 출력하는 것
ex)
.orderBy(member.username.asc(), member.age.desc())
.orderBy(member.username.asc().nullsLast())
페이징
-조회 건수 제한(offset,limit)
@Test
public void paging1() {
List<Member> result = queryFactory
.selectFrom(member)
.orderBy(member.username.desc())
.offset(1) //0부터 시작(zero index)
.limit(2) //최대 2건 조회
.fetch();
assertThat(result.size()).isEqualTo(2);
}
-전체 조회 수가 필요하면?
fetchResults()를 이용한다. total count 쿼리를 추가로 실행한다
count 쿼리가 실행됨으로써 성능에 문제를 줄 수 있다
@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);
}
'QueryDSL' 카테고리의 다른 글
[Querydsl] 서브쿼리 (from절 서브쿼리 한계) (0) | 2022.03.23 |
---|---|
[Querydsl] 조인(기본 조인, 세타 조인, on절(leftJoin,필터링), 페치조인) (0) | 2022.03.22 |
[Querydsl] 집합(groupBy, having) (0) | 2022.03.22 |
[Querydsl] 기본 검색 (0) | 2022.03.22 |
[Querydsl] 시작(Querydsl 이란, 기본 Q-Type 활용, build.gradle 설정) (0) | 2022.03.22 |