본문 바로가기

Spring Boot/Spring Data JPA

querydsl 에서 case문 사용하기

query에서 case when문을 사용하는 것보다 어플리케이션에서 비즈니스 로직으로 처리되는 것이 권장되는 방법이다.

query dsl 에서 case문은 select절, where절에서 사용이 가능하다. 아래는 간단한 사용법이다

 

case builder 

 

query dsl 에서 제공하는 case문으로 주로 when절에 복잡한 조건이 들어올때 사용된다.

> 간단한 case문 (when(조건).then(값)) 으로 처리가 힘들 때

 

new caseBuilder().when(조건) .then(값).otherwise(값)

조건이 참일때 then 값이 거짓일때 otherwise 값이 적용된다.

@Override 
public List<Cat> findColorCat(String 원하는색) {
        return jpaQueryFactory.select(cat)
            .from(cat)
            .where(new CaseBuilder()
                    .when(	 
                    	// 조건문
                    	// 색상 목록 테이블에 원하는 색상이 존재하면
                        // 원하는 색을 적용, 아니면 회색을 적용
                        JPAExpressions.selectOne()
                            .from(color)
                            .where(color.id.eq(원하는색)).exists()
                    )
                    .then(원하는색)	 // 조건이 참일 때
                    .otherwise("grey")	 // 조건이 거짓일 때
            ).fetchAll();
}

 

'Spring Boot > Spring Data JPA' 카테고리의 다른 글

queryDsl) subquery limit 1  (0) 2024.01.14
QueryDsl) BooleanExpression  (1) 2023.12.17
queryDsl 정리 및 예제  (1) 2023.12.03
JPA) JPA Auditing으로 자동화  (0) 2023.12.01
QueryDSL) From 절 SubQuery를 쓰고싶어  (2) 2023.11.23