1.기존 SpringDataJpa Repository에 새로 QuerydslPredicateExecutor를 상속받는다. (인터페이스)
public interface MemberRepository extends JpaRepository<Member, Long> , MemberRepositoryCustom , QuerydslPredicateExecutor<Member> {
//select m from Member m where m.username = ?
List<Member> findByUsername(String username);
}
기본적인 사용법
@Test
public void querydslPredicateExecutorTest() throws Exception {
QMember member = QMember.member;
Iterable<Member> result = memberRepository.findAll(member.age.between(10, 40).and(member.username.eq("member1")));
for (Member findMember : result) {
System.out.println(findMember);
}
}
- left join이 불가능 하기 때문에 실용적이지 않다.
- service, controller의 기술들이 repository의 queryDsl 기술에 의존관계가 함께 생긴다.
(순수한 dto 객체만 만들어서 넘기는게 아니라, QueryDsl의 Predicate를 조합해서 보내야하기 때문) - 결과적으로 실무 비추, 그러나 간단한 1차원 Table 이용시에는 사용 고려해볼만 하다.
'스프링 > QueryDsl' 카테고리의 다른 글
[QueryDsl] QueryDsl + Paging & CountQuery 최적화 (0) | 2022.03.22 |
---|---|
[QueryDsl] SpringDataJPA (Interface)에 원하는 QueryDsl method 추가하기 (0) | 2022.03.22 |
[QueryDsl] `JPA Repository + QueryDsl`로 동적 쿼리 & API 개발 구축 (Builder or 다중 Where 메서드) (0) | 2022.03.21 |
[QueryDsl] sqlFunction 사용하기 (0) | 2022.03.13 |
[QueryDsl] 벌크 update,delete (0) | 2022.03.13 |