오봉이와 함께하는 개발 블로그

Querydsl - 상수, 문자 더하기 본문

BE/JPA

Querydsl - 상수, 문자 더하기

오봉봉이 2022. 9. 18. 01:42
728x90

상수, 문자 더하기

상수가 필요하면 Expressions.constant(xxx)를 사용하자.

@Test
void constant() {
    List<Tuple> result = queryFactory
            .select(member.username, Expressions.constant("A"))
            .from(member)
            .fetch()
    for (Tuple tuple : result) {
        System.out.println("tuple = " + tuple);
    }
}
tuple = [member1, A]
tuple = [member2, A]
tuple = [member3, A]
tuple = [member4, A]

위와 같이 최적화가 가능하면 SQL에 constant 값을 넘기지 않는다.
상수를 더하는 것 처럼 최적화가 어려우면 SQL에 constant 값을 넘긴다.

문자 더하기 concat

@Test
void concat() {
    // {username}_{age}
    String result = queryFactory
            .select(member.username.concat("_").concat(member.age.stringValue()))
            .from(member)
            .where(member.username.eq("member1"))
            .fetchOne()
    System.out.println("result = " + result);
}
result = member1_10

member.age.stringValue()부분이 중요한데, 문자가 아닌 다른 타입들은 stringValue()로 문자로 변환할 수 있다. member.age.stringValue()를 사용하지 않으면 타입이 다르기 때문에 오류가 발생한다. (username = String, age = int) 이 방법은 ENUM을 처리할 때도 자주 사용한다.

인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90

'BE > JPA' 카테고리의 다른 글

Querydsl - 프로젝션 결과 반환 (DTO 조회)  (0) 2022.09.18
Querydsl - 프로젝션 결과 반환 (기본)  (0) 2022.09.18
Querydsl - Case 문  (0) 2022.09.18
Querydls - 서브 쿼리  (0) 2022.09.18
Querydsl - 조인 (페치 조인)  (0) 2022.09.17
Comments