Where절에 파라미터를 사용한 예제
public List<MemberTeamDto> search(MemberSearchCondition condition) {
return queryFactory
.select(new QMemberTeamDto(
member.id.as("memberId"),
member.username,
member.age,
team.id.as("teamId"),
team.name.as("teamName")))
.from(member)
.leftJoin(member.team, team)
.where(usernameEq(condition.getUsername()),
teamNameEq(condition.getTeamName()),
ageGoe(condition.getAgeGoe()),
ageLoe(condition.getAgeLoe()))
.fetch();
}
private BooleanExpression usernameEq(String username) {
return hasText(username) ? member.username.eq(username) : null ;
}
private BooleanExpression teamNameEq(String teamName) {
return hasText(teamName) ? team.name.eq(teamName) : null ;
}
private BooleanExpression ageGoe(Integer ageGoe) {
return ageGoe != null ? member.age.eq(ageGoe) : null;
}
private BooleanExpression ageLoe(Integer ageLoe) {
return ageLoe != null ? member.age.eq(ageLoe) : null;
}
참고: where 절에 파라미터 방식을 사용하면 조건 재사용 가능
//where 파라미터 방식은 이런식으로 재사용이 가능하다.
public List<Member> findMember(MemberSearchCondition condition) {
return queryFactory
.selectFrom(member)
.leftJoin(member.team, team)
.where(usernameEq(condition.getUsername()),
teamNameEq(condition.getTeamName()),
ageGoe(condition.getAgeGoe()),
ageLoe(condition.getAgeLoe()))
.fetch();
}
출처 : 김영한 JPA 스프링 데이터 강의
'Querydsl' 카테고리의 다른 글
실무 활용 - 스프링 데이터 JPA와 Querydsl (0) | 2022.07.26 |
---|---|
조회 API 컨트롤러 개발 (0) | 2022.07.26 |
동적 쿼리와 성능 최적화 조회 - Builder 사용 (0) | 2022.07.26 |
실무 활용 - 순수 JPA와 Querydsl (0) | 2022.07.26 |
SQL function 호출하기 (0) | 2022.07.26 |