-
06. Querydsl CaseBackEnd/Querydsl 2021. 7. 27. 08:25반응형
[Case1]
List<String> result = queryFactory
.select(member.age
.when(10).then("열살")
.when(20).then("스무살")
.otherwise("기타"))
.from(member)
.fetch();[Case2]
List<String> result = queryFactory
.select(new CaseBuilder()
.when(member.age.between(0, 20)).then("0~20살")
.when(member.age.between(21, 30)).then("21~30살")
.otherwise("기타"))
.from(member)
.fetch();
[Case3]/**
* orderBy에서 Case문 함께 사용하기
* Querydsl은 자바 코드로 작성하기 때문에 rankPath 처럼 복잡한 조건을 변수로 선언해서 select 절, orderBy 절에서 함께 사용할 수 있다.
*
* 1. 0 ~ 30살이 아닌 회원을 가장 먼저 출력
* 2. 0 ~ 20살 회원 출력
* 3. 21 ~ 30살 회원 출력
*/
NumberExpression<Integer> rankPath = new CaseBuilder()
.when(member.age.between(0, 20)).then(2)
.when(member.age.between(21, 30)).then(1)
.otherwise(3);
List<Tuple> result = queryFactory
.select(member.username, member.age, rankPath)
.from(member)
.orderBy(rankPath.desc())
.fetch();반응형'BackEnd > Querydsl' 카테고리의 다른 글
08. Querydsl Projection (0) 2021.07.27 07. Querydsl 상수, 문자 더하기 (0) 2021.07.27 05. Querydsl Subquery (0) 2021.07.25 04. Querydsl Join (0) 2021.07.18 03. Querydsl 기본 문법 (0) 2021.07.17