Home [Querydsl] 동적으로 조건문 만들기
Post
Cancel

[Querydsl] 동적으로 조건문 만들기

Queydsl에서 조건문을 생성하는 방법


  • 조건문을 생성하는 방법에는 BooleanBulider와 BooleanExpression을 사용하는 방법이 있다.

BooleanBuilder

  • if문으로 필요한 조건문만을 추가하여 쿼리를 만들 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public List<Member> list(String name, String age, String tel) {
	BooleanBulider bulider = new BooleanBulider();
    
	if(isNotEmpty(name)) {
        bulider.and(member.name.eq(name));
    }
	if(isNotEmpty(age)) {
        bulider.and(member.name.eq(age));
    }
	if(isNotEmpty(tel)) {
        bulider.and(member.name.eq(tel));
    }
    
    List<Member> list=select()
        .from(qmember)
        .where(bulider)
        .fetch();
    
    return list;
}

BooleanExpression

  • BooleanExpression 타입을 리턴하는 메서드를 만들어 조건을 추가 할 수 있다. 메서드로 만들어 사용하기 때문에 재사용이 가능하며 어떤 조건인지 명확히 알 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public List<Member> list(String name, String age, String tel) {
	
    List<Member> list=select()
        .from(qmember)
        .where(nameEq(name),telEq(tel))
        .fetch();
    
    return list;
}

private BooleanExpression nameEq(String name) {
    return name != null ? member.name.eq(name) : null;
}

private BooleanExpression telEq(String tel) {
    return tel!= null ? member.tel.eq(tel) : null;
}
This post is licensed under CC BY 4.0 by the author.