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

Querydsl - SQL Function 호출하기 본문

BE/JPA

Querydsl - SQL Function 호출하기

오봉봉이 2022. 9. 19. 22:49
728x90

SQL function 호출하기

SQL function은 JPA와 같이 방언(Dialect)에 등록된 내용만 호출할 수 있다.

member -> M으로 변경하는 replace 함수 사용

@Test
void sqlFunction() {
    List<String> result = queryFactory
            .select(Expressions.stringTemplate(
                    "function('replace', {0}, {1}, {2})",
                    member.username, "member", "M"))
            .from(member)
            .fetch();
    for (String s : result) {
        System.out.println("s = " + s);
    }
}
s = M1
s = M2
s = M3
s = M4

소문자로 변경해서 비교

@Test
void sqlFunctionLower() {
    List<String> result = queryFactory
            .select(member.username)
            .from(member)
            .where(member.username.eq(
                    Expressions.stringTemplate("function('lower', {0})", member.username)
                )
            )
            .fetch();
    for (String s : result) {
        System.out.println("s = " + s);
    }
}

lower 같은 ansi 표준 함수들은 querydsl이 상당부분 내장하고 있다.
따라서 다음과 같이 처리해도 결과는 같다.

.where(member.username.eq(member.username.lower()))
인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90
Comments