tuple은 com.querydsl.core 에 포함되는데, 서비스,프리젠테이션 로직에서 사용하는 건 좋은 설계가 아니다. 핵심 비즈니스 로직에서 하부 구현 기술을 사용하는 것은 추후에 변경이 필요할 때 의존성에 의해 불편함이 생김. 그래서...
public static BooleanBuilder nullSafeBuilder(Supplier<BooleanExpression> f) {
try {
return new BooleanBuilder(f.get());
} catch (IllegalArgumentException e) {
return new BooleanBuilder();
}
}
private BooleanBuilder eqUserName(String userName) {
return QueryDSLUtil.nullSafeBuilder(
() -> user.userName.contains(StringUtil.nvl(userName)));
}