기본 fetch
//fetch
List<Member> fetch = queryFactory
.selectFrom(member)
.fetch();
단건 조회 fetchOne
//fetchOne
queryFactory
.selectFrom(member)
.fetchOne();
다건이지만, 처음 것만 가져오기 fetchFirst
//fetchFirst
queryFactory
.selectFrom(member)
.fetchFirst();
페이징,count 포함 fetchResults
//fetchResult 페이징,count 포함
QueryResults<Member> pagingResult = queryFactory
.selectFrom(member).limit(5).offset(0)
.fetchResults();
pagingResult.getTotal();
List<Member> data = pagingResult.getResults();
long limit = pagingResult.getLimit();
long offset = pagingResult.getOffset();
count만 가져오기 fetchCount
//fetchCount count만 가져오기
long couint = queryFactory
.selectFrom(member)
.fetchCount();
전체 쿼리 모습이다.
@Test
public void resultFetch() throws Exception {
//fetch
List<Member> fetch = queryFactory
.selectFrom(member)
.fetch();
//fetchOne
queryFactory
.selectFrom(member)
.fetchOne();
//fetchFirst
queryFactory
.selectFrom(member)
.fetchFirst();
//fetchResult 페이징,count 포함
QueryResults<Member> pagingResult = queryFactory
.selectFrom(member).limit(5).offset(0)
.fetchResults();
pagingResult.getTotal();
List<Member> data = pagingResult.getResults();
long limit = pagingResult.getLimit();
long offset = pagingResult.getOffset();
for (Member m : data) {
System.out.println("============Member : " + m);
}
//Paging처럼 count 쿼리까지 나간다.
/* select count(member1)
from Member member1 */
/* select member1
from Member member1 */
//fetchCount count만 가져오기
long couint = queryFactory
.selectFrom(member)
.fetchCount();
}
🎇 fetchCount 유의 사항
쿼리가 복잡할 수록 Paging시에 가져오는 totalCount 쿼리도 복잡해지므로,
따로 Count를 분리할 때는 fetchCount 사용을 지양하자.
'스프링 > QueryDsl' 카테고리의 다른 글
[QueryDsl] 서브쿼리 사용하기 (0) | 2022.03.10 |
---|---|
[QueryDsl] Join + On절 + Fetch join (0) | 2022.03.08 |
[QueryDsl] 정렬, 페이징, Tuple을 이용한 특정 값 Select (max,min,avg,sum 등) (0) | 2022.03.06 |
[QueryDsl] QueryDsl 기본 사용법, 검색 유형별 예시 (0) | 2022.03.05 |
[QueryDsl] QueryDsl 설정방법 (0) | 2022.03.03 |