본문 바로가기

꿀팁 활용

[QueryDSL] 검색 조건 쿼리

 

 

QueryDSL의 기본 검색 조건 쿼리는 다음과 같이 사용할 수 있습니다.

 

@Test
@DisplayName("검색 조건 쿼리 EX")
fun testSearchQuery() {

    val eq: BooleanExpression = member.username.eq("member1") //username = "member1"
    val ne: BooleanExpression = member.username.ne("member1") //username != "member1"
    val eq_not: BooleanExpression = member.username.eq("member1").not() //username != "member1
    
    val isNotNull: BooleanExpression = member.username.isNotNull
    val inq: BooleanExpression = member.age.`in`(10, 20)
    val notIn: BooleanExpression = member.age.notIn(10, 20)
    val between: BooleanExpression = member.age.between(10, 20)
    
    val goe = member.age.goe(30) //age >= 30
    val gt = member.age.gt(30) //age > 30
    val loe = member.age.loe(30) //age <= 30
    val lt = member.age.lt(30) //age < 30
    
    val like = member.username.like("member%")//like 검색
    val contains = member.username.contains("member")//%member%
    val startsWith = member.username.startsWith("member%") //member%
    
    
    val fetch = query
        .selectFrom(member)
        .where(
            member.username.eq("username1")
        )
        .fetch()
}

 

 

검색 조건을 and(), or()로 연결할 수 있습니다.
JPQL이 제공하는 모든 검색 조건은 QueryDSL도 지원합니다.

 

 

 

 

 

 

참고

where()의 AND 조건을  ,를 사용해서 처리할 수 있습니다.

 

 

다음은 그 예시입니다.

val fetch = query
    .selectFrom(member)
    .where(
        member.username.eq("username1"),
        member.age.goe(30),
    )
    .fetch()

 

where() 에 파라미터로 검색조건을 추가하면 AND 조건이 추가됩니다.

 

이때 해당 값이 null 인 경우 무시됩니다.

 

이를 통해 동적 쿼리를 깔끔하게 작성할 수 있으며, 이는 이후에 설명하도록 하겠습니다.

 

 

후기  원래 null 값은 컬럼명 !='Text' 로 비교가 안된다  sql 에서 null != 텍스트 true 가 아님

 

 

출처 : https://ttl-blog.tistory.com/214#comment9196475