본문 바로가기
Spring/Querydsl

Query DSL - CASE

by 행운의나무 2022. 7. 5.
728x90
반응형

2022.06.24 - [Spring/Querydsl] - Query DSL 시작하기

 

Query DSL 시작하기

참고 Querydsl 기본문법 학습하기 Querydsl 다이나믹 쿼리 사용하기JPA와 비교 JPA 비교해 JPA의 장점 가독성이 좋다. JPA에서 기본적으로 제공하는 기능을 넘어서는 기능은 일반적으로 native query 옵션으

twer.tistory.com

 

조건에 따른 값을 지정해주는 문법

DB

  • Team Table

team table

  • Member Table

member table

Simple case

@Repository
public class MemberRepositorySupport extends QuerydslRepositorySupport {

    private final JPAQueryFactory queryFactory;

    public MemberRepositorySupport(JPAQueryFactory queryFactory) {
        super(Member.class);
        this.queryFactory = queryFactory;
    }

public List<String> findMemberCase(){

    return queryFactory
            .select(member.age
                    .when(10).then("10살")
                    .when(20).then("20살")
                    .otherwise("0")
            )
            .from(member)
            .fetch();
}


}

/* ================= */

@SpringBootTest
class MemberRepositorySupportTest {

    @Autowired
    private MemberRepositorySupport memberRepositorySupport;


@Test
void simpleCase(){
    List<String> memberCase = memberRepositorySupport.findMemberCase();

    memberCase.forEach(System.out::println);
}
}

/* ================= */
/*
결과
10살
20살
0
*/

Complex case

@Repository
public class MemberRepositorySupport extends QuerydslRepositorySupport {

    private final JPAQueryFactory queryFactory;

    public MemberRepositorySupport(JPAQueryFactory queryFactory) {
        super(Member.class);
        this.queryFactory = queryFactory;
    }


}
/* ================= */

@SpringBootTest
class MemberRepositorySupportTest {

    @Autowired
    private MemberRepositorySupport memberRepositorySupport;


@Test
void complexCase(){
    List<Tuple> memberComplexCase = memberRepositorySupport.findMemberComplexCase();

    for(Tuple tuple : memberComplexCase){
        System.out.println(tuple);
    }
}

}
/* ================= */
/*
결과
[test1, 10, 미성년자]
[test2, 20, 20살 성인]
[test3, 12, 미성년자]
*/

참고

https://velog.io/@shlee327/Querydsl-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95-%ED%95%99%EC%8A%B5%ED%95%98%EA%B8%B0

https://hjhng125.github.io/querydsl/querydsl-case/

쿠팡으로 연결 클릭

 

제주삼다수 그린

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

반응형

'Spring > Querydsl' 카테고리의 다른 글

Query DSL 시작하기  (0) 2022.12.12
Query DSL - Dynamic Query  (0) 2022.07.06
Query DSL - Paging  (0) 2022.07.06
Query DSL - Subquery  (0) 2022.07.05
Query DSL - Join  (0) 2022.07.03