QueryDSL : 문법

이진욱·2024년 12월 25일

이론

목록 보기
16/24

QueryDSL 주요 문법

1. 기본적인 JPAQuery 사용

JPAQueryFactory를 사용하여 쿼리를 생성합니다.

QUser qUser = QUser.user;

JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager);
List<User> users = queryFactory.selectFrom(qUser)
    .where(qUser.age.gt(18))
    .fetch();

2. 조건문 (BooleanExpression)

QueryDSL은 조건을 조합하거나 분리하여 동적으로 사용할 수 있습니다.

BooleanExpression ageOver18 = qUser.age.gt(18);
BooleanExpression nameIsJohn = qUser.name.eq("John");

List<User> users = queryFactory.selectFrom(qUser)
    .where(ageOver18.and(nameIsJohn))
    .fetch();

3. 동적 쿼리 작성

BooleanBuilder를 사용하여 동적으로 조건을 추가합니다.

BooleanBuilder builder = new BooleanBuilder();

if (age != null) {
    builder.and(qUser.age.gt(age));
}
if (name != null) {
    builder.and(qUser.name.contains(name));
}

List<User> users = queryFactory.selectFrom(qUser)
    .where(builder)
    .fetch();

4. 정렬, 페이징

List<User> users = queryFactory.selectFrom(qUser)
    .where(qUser.age.gt(18))
    .orderBy(qUser.name.asc())
    .offset(0)
    .limit(10)
    .fetch();

5. 집계 함수

Tuple result = queryFactory.select(qUser.age.avg(), qUser.age.max())
    .from(qUser)
    .fetchOne();

Double avgAge = result.get(qUser.age.avg());
Integer maxAge = result.get(qUser.age.max());
profile
열심히 하는 신입 개발자

0개의 댓글