오봉이와 함께하는 개발 블로그
Querydsl - 결과 조회 본문
728x90
결과 조회
- fetch()
- 리스트 조회
- 데이터 없으면 빈 리스트 반환
- fetchOne()
- 단 건 조회
- 결과가 없으면
- null
- 결과가 둘 이상이면
- com.querydsl.core.NonUniqueResultException
- fetchFirst()
- limit(1).fetchOne()
- fetchResults()
- 페이징 정보 포함
- total count 쿼리 추가 실행
- 페이징 쿼리가 복잡해지면 성능 때문에 contents(데이터)를 가져오는 쿼리와 total count를 가져오는 쿼리가 다를 때가 있다.
- 때문에 복잡하고 성능이 중요한 페이징을 할 때는 fetchResults()를 사용하지 말고 쿼리를 따로 날려야 한다.
- fetchCount()
- count 쿼리로 변경해서 count 수 조회
@Test
void resultFetch() {
//List
List<Member> fetch = queryFactory
.selectFrom(member)
.fetch();
//단 건
Member findMember1 = queryFactory
.selectFrom(member)
.where(member.username.eq("member1"))
.fetchOne();
//처음 한 건 조회
Member findMember2 = queryFactory
.selectFrom(member)
.fetchFirst();
//페이징에서 사용
QueryResults<Member> results = queryFactory
.selectFrom(member)
.fetchResults();
// 페이징에서 사용하는 메소드
results.getTotal();
results.getLimit();
results.getOffset();
// 실제 페이징할 때 출력해야 하는 값들
List<Member> content = results.getResults();
//count 쿼리로 변경
long count = queryFactory
.selectFrom(member)
.fetchCount();
}
인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90
'BE > JPA' 카테고리의 다른 글
Querydsl - 페이징 (0) | 2022.09.16 |
---|---|
Querydsl - 정렬 (0) | 2022.09.16 |
Querydsl - 검색 조건 쿼리 (0) | 2022.09.16 |
Querydsl - 기본 Q-Type 활용 (0) | 2022.09.15 |
Querydsl - JPQL vs Querydsl (0) | 2022.09.15 |
Comments