오봉이와 함께하는 개발 블로그

Querydsl - 검색 조건 쿼리 본문

BE/JPA

Querydsl - 검색 조건 쿼리

오봉봉이 2022. 9. 16. 00:00
728x90

검색 조건 쿼리

기본 검색 쿼리

@Test
void search() {
    Member findMember = queryFactory.selectFrom(member)
            .where(
                    member.username.eq("member1")
                            .and(member.age.eq(10))
            )
            .fetchOne();
    assertThat(findMember.getUsername()).isEqualTo("member1");
}

검색조건은 .and(), .or()를 메서드 체인으로 연결할 수 있다.
select, fromselectFrom으로 합칠 수 있음

JPQL이 제공하는 모든 검색 조건 제공

member.username.eq("member1") // username = 'member1'
member.username.ne("member1") //username != 'member1'
member.username.eq("member1").not() // username != 'member1'
member.username.isNotNull() //이름이 is not null
member.age.in(10, 20) // age in (10,20)
member.age.notIn(10, 20) // age not in (10, 20)
member.age.between(10,30) //between 10, 30
member.age.goe(30) // age >= 30
member.age.gt(30) // age > 30
member.age.loe(30) // age <= 30
member.age.lt(30) // age < 30
member.username.like("member%") //like 검색
member.username.contains("member") // like ‘%member%’ 검색
member.username.startsWith("member") //like ‘member%’ 검색

AND 조건을 파라미터로 처리

@Test
void searchAndParam() {
    List<Member> result1 = queryFactory
            .selectFrom(member)
            .where(
                    member.username.eq("member1"),
                    member.age.eq(10)
            )
            .fetch();
}

where()에 파라미터로 검색조건을 추가하면 AND 조건이 추가된다.
이 경우 null값이 들어오면 무시하는데, 메소드 추출을 활용해서 동적 쿼리를 깔끔하게 만들 수 있는 장점이 있다.

인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90

'BE > JPA' 카테고리의 다른 글

Querydsl - 정렬  (0) 2022.09.16
Querydsl - 결과 조회  (0) 2022.09.16
Querydsl - 기본 Q-Type 활용  (0) 2022.09.15
Querydsl - JPQL vs Querydsl  (0) 2022.09.15
Querydsl - 설정, 예제 도메인 모델  (0) 2022.09.15
Comments