본문 바로가기
Kotlin

[Querydsl] @QueryProjection 사용하기, DTO로 조회

by 고체물리학 2022. 8. 17.
  • selectFrom을 사용하여 테이블의 전체 열을 조회하지 않고 원하는 열만 조회할 때 DTO를 사용하여 조회하고 출력할 수 있다

 

테이블의 id, name, data만 조회 하기 위해서는 queryDto이름의 data class를 정의하고 @QueryProjection을 붙여줘야 한다

data class DataQueryDto @QueryProjection constructor(
    val id: Long,
    val name: String,
    val data: String
)

 

이렇게 정의하면 DTO기반으로 생성된 QDTO를 사용할 수 있다

 

 

 

@QueryProjection을 사용하면 컴파일 시에 타입을 체크할 수 있다

fun findByName(): List<DataQueryDto>{
    return query.select(QDataQueryDto(member.id, member.name,member.data))
        .from(member)
        .fetch()
}

 

member 테이블의 id, name, data를 정의한 DataQueryDto 형식으로 결과를 조회할 수 있다

반응형

댓글