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;
}