반응형
querydsl에서도 where절에 case문 사용이 가능하다.
아래처럼 사용한다.
보통 동적으로 조건을 나눠 걸어야할 때 사용하기 때문에, 내 경우는 아예 조건문을 생성하는 기능을 따로 구현하도록 했다.
BooleanBuilder 앞뒤에 얼마든지 추가 조건을 붙일 수 있다.
BooleanBuilder conditions = new BooleanBuilder();
if (addYn.isSuppCd() && noneNull(this.suppCd, params.getSuppCd())) {
// 조건이 true일 경우 in절을 조건절에 넣고 false일 경우 1=1 을 넣어 pass 시킨다.
conditions.and(new CaseBuilder().when(params.getCorpRegNo().eq(this.getCorpRegNo()))
.then((Predicate)(params.getSuppCd().in(this.suppCd)))
.otherwise(Expressions.asNumber(1).eq(1)));
}
// 쿼리로 변환되면 아래처럼 된다.
case
when tb_sales_base.corp_reg_no = ? then tb_sales_base.supp_cd = ?
else ? = ? end
반응형
댓글