결과 조회 리스트는 아래와 같다.
- fetch(): 리스트 조회, 데이터 없으면 빈 리스트 반환
- fetchOne(): 단 건 조회
- 결과가 없으면: null
- 결과가 둘 이상이면: com.querydsl.core.NonUniqueResultException
- fetchFirst(): limit(1).fetchOne()
- fetchResult(): 페이징 정보 포함, total count 쿼리 추가 실행
- fetchCount(): count 쿼리로 변경해서 count 수 조회
@Test
public void resultFetch() {
// member의 목록을 list로 조회
// List<Member> fetch = queryFactory
// .selectFrom(member)
// .fetch();
// Member fetchOne = queryFactory
// .selectFrom(member)
// .fetchOne();
//
// Member fetchFirst = queryFactory
// .selectFrom(member)
// .fetchFirst();
// query가 두 번 실행이 될 것이다 => total count를 가져와야 하니까
QueryResults<Member> results = queryFactory
.selectFrom(member)
.fetchResults();
// total이 있어야 밑에 어디까지 페이지가 1 2인지 나타나게 된다.
results.getTotal();
List<Member> content = results.getResults();
// paging에 관한 사용하는 것들
// 몇개까지 가지고온다.
// results.getLimit()
// 몇번째 부터 시작
// results.getOffset()
}
아래 처럼 실행결과에 쿼리가 생성이 된다.
// total counts를 가져오고
/* select
count(member1)
from
// count에서는 total 쿼리에 아래 count 부분만 달라진다.
Member member1 */ select
count(member0_.id) as col_0_0_
from
member member0_
// contents를 가져오게 된다. contents는 member를 다 가져오는데
/* select
member1
from
Member member1 */ select
member0_.id as id1_1_,
member0_.age as age2_1_,
member0_.team_id as team_id4_1_,
member0_.username as username3_1_
from
member member0_
아래처럼 fetchResults()를 쓰게되면 deprecated라고 뜨긴하는데 여기서 해결중이다.
실전! Querydsl - 인프런 | 학습 페이지
지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....
www.inflearn.com
fetchCount를 한 번 써보자.
// select을 count 쿼리로 바꾼다.
// 마차가지로 deprecated가 뜬다.
long total = queryFactory
.selectFrom(member)
.fetchCount();
// JPQL에서 member1엔티티를 직접 지정하여서 member의 id로 바뀌었다.
/* select
count(member1)
from
Member member1 */ select
count(member0_.id) as col_0_0_
from
member member0_
<출처 김영한: 실전! Querydsl >
https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84/dashboard
실전! Querydsl - 인프런 | 강의
Querydsl의 기초부터 실무 활용까지, 한번에 해결해보세요!, - 강의 소개 | 인프런...
www.inflearn.com
'Spring > QueryDSL' 카테고리의 다른 글
집합 (0) | 2022.04.20 |
---|---|
정렬 & 페이징 (0) | 2022.04.20 |
검색 조건 쿼리 (0) | 2022.04.19 |
기본 Q-Type 활용 (0) | 2022.04.19 |
JPQL vs Querydsl (0) | 2022.04.19 |