Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Case 문 본문

인프런/[인프런] QueryDsl

Case 문

Seung__ 2021. 9. 2. 23:59

1. Case문


  • select, 조건절(where), order by에서 사용 가능

 

2. 예제


  • 간단한 경우
    @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);
        }
    }
s = 열살
s = 스무살
s = 기타
s = 기타
  • 복잡한 경우
    • caseBuilder 생성 필요.
    @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);
        }
    }
s = 0~20살
s = 0~20살
s = 21~30살
s = 기타

 

3. 써야하나.?


  • DB는 raw data를  grouping하거나, 최소한의 계산만 하고
  • case를 활용하여 10 -> 열살 로 바꾸는 듯한 행위는 최대한 하지 말자.

 

4. GitHub : 210902 Case


 

GitHub - bsh6463/Querydsl

Contribute to bsh6463/Querydsl development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] QueryDsl' 카테고리의 다른 글

프로젝션과 결과 반환  (0) 2021.09.03
상수, 문자 더하기  (0) 2021.09.03
서브쿼리, SubQuery  (0) 2021.09.02
Join  (0) 2021.09.02
집합  (0) 2021.09.01
Comments