개발이 좋아서/QueryDSL이 좋아서
19장 SQL function 호출하기
zoaseo
2023. 5. 17. 17:23
SQL function은 JPA와 같이 Dialect에 등록된 내용만 호출할 수 있다.
1) member M으로 변경하는 replace 함수 사용
@Test
public 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);
}
}
2) 소문자로 변경해서 비교해라.
@Test
public void sqlFunction2(){
List<String> result = queryFactory
.select(member.username)
.from(member)
// .where(member.username.eq(
// Expressions.stringTemplate("function('lower', {0})", member.username)
// ))
.where(member.username.eq(member.username.lower()))
.fetch();
for (String s : result) {
System.out.println("s = " + s);
}
}
lower 같은 ansi 표준 함수들은 querydsl이 상당부분 내장하고 있다. 따라서 다음과 같이 처리해도 결과는 같다.