Database ( DB )/JPA, Querydsl

[Querydsl] CASE WHEN 사용하기

노루아부지 2019. 7. 18. 17:46

Querydsl에서 CASE WHEN을 사용하기 위해서는 CaseBuilder()를 사용하면 됩니다.

 

사용 방법은 아래를 참고하시면 됩니다.

 

예1)

Expression<String> cases = new CaseBuilder()
     .when(c.annualSpending.gt(10000)).then("Premier")
     .when(c.annualSpending.gt(5000)).then("Gold")
     .when(c.annualSpending.gt(2000)).then("Silver")
     .otherwise("Bronze");

 

예2)

import static kr.com.wow.QTbUser;
 
// 클래스 및 함수 선언부 생략
JPAQuery<TbUser> query = jpaQueryFactory
            .from(tbUser)
            .select(Projections.bean(TbUser.class,
                tbUser.userCode
                , new CaseBuilder()
                        .when(tbUser.userType.eq("1")).then("일반")
                        .when(tbUser.userType.eq("2")).then("관리자")
                        .otherwise("")
 
  • CaseBuilder : CASE WHEN 문법 시작
  • when : 조건문
  • then : when절이 true일 경우 실행
  • otherwise : when절이 false 일 경우 실행
  • as : CaseBuilder() 사용 시 alis(as)를 하지 않으면 결과물 필드의 이름을 알 수 없기 때문에 오류 발생

 

 

[더 자세한 정보는 공식 API 문서를 참조]

http://www.querydsl.com/static/querydsl/4.1.4/apidocs/com/querydsl/core/types/dsl/CaseBuilder.html

 

CaseBuilder (Querydsl 4.1.4 API)

 

www.querydsl.com

 

728x90
loading