QueryDSL StringTemplate이란?
개요
QueryDSL에서 SQL Function을 사용하고 싶었는데 StringTemplate이라는 키워드를 발견하여 알아보고자 합니다.
StringTemplate이란?
Expressions.stringTemplate()
Experssions.numberTemplate()
위의 메서드를 통해 QueryDSL에서도 SQL Function을 사용할 수 있습니다.
실제 활용 예시
StringTemplate createDate = Expressions.stringTemplate(
"cast(extract(epoch from {0}) as long)", qOrderSheetDetail.createDate
);
.where(
qOrderSheet.createDate.gt(createDate)
);
⚠️ Warning
실행 중에QuerySyntaxException가 발생한다면 function 이후 작성한 문법에 오류가 있을 수 있습니다. 특히 괄호를 닫지 않았거나 파라미터 개수가 정확하지 않는 등의 실수를 할 수 있으니 쿼리를 다시 한번 확인해보시기 바랍니다.
사용하기 전 고려할 사항
- ANSI SQL(표준 SQL)을 활용하는 방안을 더 고려할 수 있습니다.
- DB에 부하를 주기보다는 Application에서 처리하는 것이 더 좋을 수 있습니다.
참고자료
https://jaime-note.tistory.com/78
[Querydsl] SQL 함수 사용하기
모든 소스 코드는 여기 있습니다. SQL 함수는 Dialect로 등록한 언어에 대해서만 사용할 수 있습니다. 현재 프로젝트에서는 H2 데이터베이스를 사용하므로 H2Dialect에 명시된 함수들만 사용할 수 있
jaime-note.tistory.com
https://ksk-developer.tistory.com/49
QueryDsl where 조건에서 stringtemplate 사용하자
몇 년 전에 querydsl을 사용하고 나서 해당 연산을 어떻게 해야 하는지 시행착오가 좀 있었는데 최근에 같은 팀원분이 어떻게 해야 되는지 물어봐서 다른 사람들도 모를 수 있겠구나 하고 글을 적
ksk-developer.tistory.com