1. JPQL vs Querydsl
2. 기본 Q-Type 활용
3. 검색 조건 쿼리
4. 결과 조회
5. 정렬
6. 페이징
7. 집합
1. JPQL vs Querydsl
1-1) QuerydslBasicTest



-
Console(success)

1-2) field level로 빼기
1-2)-1. BaseTest

1-2)-2. QuerydslBasicTest

2. 기본 Q-Type 활용
2-1) QuerydslBasicTest
- Querydsl
- Querydsl은 JPQL의 빌더 역할을 하는 거임.
- 결과적으로 Querydsl로 작성한 거는 JPQL이 된다고 보면 됨.

2-2) 실행되는 JPQL을 보고 싶을 때
2-2)-1. application.yml

-
Console
- 같은 테이블을 조인하는 경우에만 사용하면 됨.

3. 검색 조건 쿼리
3-1) QueryBasicTest
- selectFrom = select + from

-
Console

3-2) JPQL이 제공하는 모든 검색 조건 제공

3-3) between

3-4) andParam

4. 결과 조회
- fetch() : 리스트 조회, 데이터 없으면 빈 리스트 반환
- fetchOne() : 단 건 조회
- 결과가 없으면 : null
- 결과가 둘 이상이면 : com.querydsl.core.NonUniqueResultException
- fetchFirst() : limit(1).fetchOne()
- fetchResults() : 페이징 정보 포함, total count 쿼리 추가 실행
- fetchCount() : count 쿼리로 변경해서 count 수 조회
4-1) QuerydslBasicTest
- 복잡한 페이징 쿼리를 할 때는 개별적으로 나눠서 쿼리 날리기

-
total count(페이징하기 위해)

-
content

5. 정렬
5-1) QuerydslBasicTest


-
Console

6. 페이징
6-1) 조회건수 제한
6-1)-1. QueryBasicTest

-
Querydsl
- Querydsl은 JPQL의 빌더 역할을 하는 거임.
- 결과적으로 Querydsl로 작성한 거는 JPQL이 된다고 보면 됨.

-
Console
- 실제 실행된 쿼리를 보면 limit와 offset이 들어간 걸 확인
- Oracle의 경우 row가 들어감.

6-2) 전체 조회수

- Console(총 2번 나감, 단순할 경우)
- 주의: count 쿼리가 실행되니 성능상 주의!
7. 집합