흰 스타렉스에서 내가 내리지

[Querydsl] SQL function 호출하기 본문

JPA

[Querydsl] SQL function 호출하기

주씨. 2024. 4. 20. 18:15
728x90

# member → M

@Test
public void sqlFunction(){
    List<String> result = queryFactory
            .select(Expressions.stringTemplate(
                    "function('replace', {0}, {1}, {2})",
                    member.username, "member", "M"))
            .from(member)
            .fetch();
}

 

 

select m.username from member m;
select replace(m.username, 'member', 'M') from member m;

 

 

# 소문자로 변경해서 비교하라

    @Test
    public void sqlFunction2(){
        List<String> result = queryFactory
                .select(member.username)
                .from(member)
                .where(member.username.eq(
                        Expressions.stringTemplate("function('lower', {0})", member.username)))
                .fetch();

    }

 

  • lower 같은 ansi 표준 함수들은 querydsl 이 상당부분 내장하고 있다.
  • 아래와 같이 처리해도 결과는 같다
    @Test
    public void sqlFunction2(){
        List<String> result = queryFactory
                .select(member.username)
                .from(member)
                .where(member.username.eq(member.username.lower()))
                .fetch();
    }