* QueryDSL StringTemplate 사용
QueryDSL에서도 SQL Function 사용을 통해 쿼리를 간단하게 작성해야 할 경우가 있습니다.
이 경우 Expressions.stringTemplate() 혹은 Expressions.numberTemplate() 등을 통해 SQL Function을 사용할 수 있습니다.
이를 통해 Date cast, lower case 작성 등을 QueryDSL에서 쉽게 사용 가능합니다.
Postgres에서 사용하는 간단한 예시 쿼리문을 몇개 살펴보겠습니다.
예시1) Date 추출
JPAQuery<String> query = this.queryFactory.selectfrom(myTable)
.groupby(Expressions.stringTemplate(
"DATE_FORMAT({0},'{1s}')", myTable.createDate, ConstantImpl.create("%Y-%m-%d"));
또는
StringTemplate formattedDateExpression = Expressions.stringTemplate(
"DATE_FORMAT({0},'{1s}')", qOrderItem.orderDate, ConstantImpl.create("%Y-%m-%d"));
JPAQuery<String> query = this.queryFactory.selectfrom(myTable)
.groupby(formattedDateExpression);
예시2) Loweer Case
JPAQuery<String> query = this.queryFactory.selectfrom(myTable)
.where(Expressions.stringTemplate("lower({0})", myTable.name).in(nameList))
또는
StringTemplate nameInExpression = Expressions.stringTemplate("lower({0})", myTable.name).in(nameList);
JPAQuery<String> query = this.queryFactory.selectfrom(myTable)
.where(nameInExpression)
기타 지원하는 함수는 queryDSL 코드를 보면 알 수 있습니다.
해당 깃헙 주소는 아래와 같으니, 참고해주시면 됩니다.
반응형
'Java' 카테고리의 다른 글
[subList] Java.Util.ArrayList$SubList Deserialization 이슈 해결 (0) | 2022.03.30 |
---|---|
[Java-17] 자바 암호화 확장 정책 다운 및 설치 (4) | 2018.05.08 |
[Java-16] Project language level 설정 (0) | 2018.05.07 |
[Java-15] JVM 개념과 구조 (0) | 2017.11.18 |
[Java-14] 어노테이션 (0) | 2017.05.08 |