Programing/Spring Boot

Querydsl 동적 쿼리 사용하는 2가지 방법 (Builder, where절 파라미터)

딩코딩 2023. 7. 1. 12:57

1. Builder를 사용 하는 방법

    fun searchByBuilder(condition: MemberSearchCondition): List<Member>{
        val builder = BooleanBuilder()
        
        //StringUtils.hasText를 통해 null Or "" 대응
        if(StringUtils.hasText(condition.name)){ 
            builder.and(member.name.eq(condition.name))
        }
        if(StringUtils.hasText(condition.age)){
            builder.and(member.age.eq(condition.age))
        }
        
        return queryFactory.selectFrom(member)
                .where(builder)
                .fetch()
    }

 

 

 

2. Where절 파라미터를 사용하는 방법

    fun search(condition: MemberSearchCondition): List<Member>{
        
        return queryFactory.selectFrom(member)
                .where(nameEq(condition.name),
                		ageEq(condition.age))
                .fetch()
    }
    
    
    fun nameEq(name: String): BooleanExpression {
    	return name.let{member.name.eq(condition.name)}
    }
    
    fun ageEq(age: String): BooleanExpression {
    	return age.let{member.age.eq(condition.age)}
    }