1) 단순한 조건
@Test
public void basicCase(){
List<String> result = queryFactory
.select(member.age
.when(10).then("열살")
.when(20).then("스무살")
.otherwise("기타"))
.from(member)
.fetch();
for (String s : result) {
System.out.println("s = " + s);
}
}
2) 복잡한 조건
@Test
public void complexCase(){
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();
for (String s : result) {
System.out.println("s = " + s);
}
}
3) orderBy에서 Case 문 함께 사용하기 예제
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();
for (Tuple tuple : result) {
String username = tuple.get(member.username);
Integer age = tuple.get(member.age);
Integer rank = tuple.get(rankPath);
System.out.println("username = " + username + " age = " + age + " rank = "
+ rank);
}
'개발이 좋아서 > QueryDSL이 좋아서' 카테고리의 다른 글
14장 프로젝션과 결과 반환 - DTO 조회 (0) | 2023.05.15 |
---|---|
13장 조인 - 상수, 문자 더하기 (0) | 2023.05.15 |
11장 조인 - 서브 쿼리 (0) | 2023.05.15 |
10장 조인 - 페치조인 (0) | 2023.05.15 |
9장 조인 - on절 (0) | 2023.05.15 |