Querydsl
의 기본 문법에 대해서 알아보자.
👉 전체적인 내용은 다음과 같다.
1) 검색 조건 쿼리
2) 결과 조회
3) 정렬
4) 페이징
5) 집합
6) 상수, 문자 더하기
7) 조인 - 기본 조인
8) 조인 - on 절
9) 조인 - 페치 조언
10) 서브 쿼리
11) Case 문
이번 포스팅에서는 1) ~ 6)
에 대해서 학습한다.
chain
형식으로 ( and
/ or
등) 적용할 수 있다.select(member).from(member)
를 selectFrom(member)
로 표현할 수 있다.and
인 경우는 쉼표로 작성할 수 있다.where ( member.username.eq("member1"), member.age.between(10, 30) )
null
값은 무시된다.fetch()
: 리스트 조회, 데이터 없으면 빈 리스트 반환fetchOne()
: 단 건 조회null
com.querydsl.core.NonUniqueResultException
fetchFirst()
: 단 건이든 아니든 1개만 조회 (=limit(1).fetchOne()
)fetchResults()
: 페이징 정보 포함 ( total count
쿼리 추가 실행 )fetchCount()
: count
쿼리로 변경해서 count
수 조회nullsLast()
, nullsFirst()
: null
데이터 순서 부여fetchResult()
사용count
)도 같이 포함해서 조회하는 경우 fetchResults()
를 사용하면 된다. ( 단, 성능상 카운트 쿼리와 조회 쿼리가 완전히 다르게 적용되어야 하는 경우는, 사용하지 말자. ) SUM
), 평균(AVG
), 최대(MAX
), 최소(MIN
), 갯수(COUNT
), ...select
절에 원하는 걸 직접 명시하는 경우는, 조회시 Tuple
이라는 것으로 조회하게 된다. ( 조회 대상이 2개 이상이면 Tuple
로 조회 )Tuple
: 여러개 타입이 있을 때, 꺼내올 수 있는 것으로 이해하자. 참고로 실무에서는 Tuple
을 많이 쓰지는 않고, 이후에 학습할 DTO로 직접 조회하는 방법이 있는데, 그 방법을 많이 사용한다. )groupBy
, 그룹화된 결과를 제한하려면 having
Expressions.constant(xxx)
사용 ( com.querydsl.core.types.dsl.Expressions
)concat
{username}_{age}
의 형식으로 조회했다.stringValue()
를 통해 문자로 변환해야 한다.stringValue()
로 문자로 변환할 수 있다. 이 방법은 ENUM
을 처리할 때도 자주 사용한다.강의를 듣고 정리한 글입니다. 코드와 그림 등의 출처는 김영한 강사님께 있습니다.