검색 조건
@SpringBootTest
@Transactional
public class QuerydslBasicTest {
    @Test
    void search() {
        Member findMember = queryFactory
                // select와 from이 같으면 합칠 수 있다.
                .selectFrom(member)
                .where(member.username.eq("member1")
                        .and(member.age.eq(10))
                ).fetchOne();
        assertThat(findMember.getUsername()).isEqualTo("member1");
    }
}select member1
from Member member1
where member1.username = ?1
  and member1.age = ?2- and, or를 메서드 체인으로 연결할 수 있다. 
- select, from을 selectFrom으로 합칠 수 있다. 
제공하는 검색 조건
@SpringBootTest
@Transactional
public class QuerydslBasicTest {
    void example() {
        member.username.eq("member1")
        // username != 'member1'
        member.username.ne("member1")
        // username != 'member1'
        member.username.eq("member1").not()
        // 이름이 is not null
        member.username.isNotNull()
        // age in (10,20)
        member.age.in(10, 20)
        // age not in (10, 20)
        member.age.notIn(10, 20)
        // between 10, 30
        member.age.between(10, 30)
        // age >= 30
        member.age.goe(30)
        // age > 30        
        member.age.gt(30)
        // age <= 30
        member.age.loe(30)
        // age < 30        
        member.age.lt(30)
        // like 검색         
        member.username.like("member%")
        // like ‘%member%’ 검색
        member.username.contains("member")
        // like ‘member%’ 검색
        member.username.startsWith("member")
    }
}- JPQL이 제공하는 모든 검색 조건을 제공한다. 
AND 조건을 파라미터로 처리
@SpringBootTest
@Transactional
public class QuerydslBasicTest {
    @Test
    public void searchAndParam() {
        List<Member> result1 = queryFactory
                .selectFrom(member)
                .where(member.username.eq("member1"),
                        member.age.eq(10))
                .fetch();
        assertThat(result1.size()).isEqualTo(1);
    }
}- where()의 파라미터로 검색 조건을 추가하면 and가 적용된다. 
- null 값을 무시하기 때문에 메서드 추출을 활용해 동적 쿼리를 깔끔하게 만들 수 있다. 
Last updated
Was this helpful?