ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 06. Querydsl Case
    BackEnd/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

    댓글

Designed by Tistory.