Querydsl - 기본문법(2)

LEE ·2023년 9월 15일

Querydsl

목록 보기
2/10

1. 검색 조건 쿼리

1-1. 기본 검색 쿼리

검색 조건은 .and() , . or() 를 메서드 체인으로 연결할 수 있다.

참고: select , from 을 selectFrom 으로 합칠 수 있다.

1-2. JPQL이 제공하는 모든 검색 조건 제공

참고

eq - equal ( = )
ne - not equal ( <> )
lt - little ( < )
le - little or equal ( <= )
gt - greater ( > )
ge - greater or equal ( >= )

1-3. AND 조건을 파라미터로 처리

where() 에 파라미터로 검색조건을 추가하면 AND 조건이 추가됨

이 경우 null 값은 무시 -> 메서드 추출을 활용해서 동적 쿼리를 깔끔하게 만들 수 있음 -> 뒤에서 설명

1-4. 결과 조회

fetch() : 리스트 조회, 데이터 없으면 빈 리스트 반환
fetchOne() : 단 건 조회
결과가 없으면 : null,
결과가 둘 이상이면 : com.querydsl.core.NonUniqueResultException

fetchFirst() : limit(1).fetchOne()
fetchResults() : 페이징 정보 포함, total count 쿼리 추가 실행
fetchCount() : count 쿼리로 변경해서 count 수 조회


2. 정렬

desc() , asc() : 일반 정렬

nullsLast() , nullsFirst() : null 데이터 순서 부여


3. 페이징

3-1. 조회 건수 제한

3-2. 전체 조회 수가 필요하면?

주의: count 쿼리가 실행되니 성능상 주의!

참고: 실무에서 페이징 쿼리를 작성할 때, 데이터를 조회하는 쿼리는 여러 테이블을 조인해야 하지만, count 쿼리는 조인이 필요 없는 경우도 있다. 그런데 이렇게 자동화된 count 쿼리는 원본 쿼리와 같이 모두 조인을 해버리기 때문에 성능이 안나올 수 있다. count 쿼리에 조인이 필요없는 성능 최적화가 필요하다면, count 전용 쿼리를 별도로 작성해야 한다.


4. 집합

4-1. 집합 함수

  • JPQL이 제공하는 모든 집합 함수를 제공한다.

  • tuple은 프로젝션과 결과반환에서 설명한다.

4-2. GroupBy 사용

groupBy , 그룹화된 결과를 제한하려면 having

0개의 댓글