결과 조회

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);
}

 

 

+ Recent posts