반응형
DTO의 생성자에 붙이는 어노테이션
@QueryProjection
을 사용하면, DTO의 QType을 만들 수 있고, 그걸 사용해서 쿼리문을 생성할 수 있다.
UserDTO
@Data
@NoArgsConstructor
@Builder
public class UserDTO {
private String name;
private int age;
@QueryProjection
public UserDTO(String name, int age) {
this.name = name;
this.age = age;
}
}
이후, complieQuerydsl을 하면, DTO의 Q타입이 생성된다.
@Test
public void findDtoByQueryProjection() throws Exception{
//given
List<UserDTO> fetch = queryFactory.select(new QUserDTO(member.username,
member.age))
.from(member)
.fetch();
for (UserDTO userDTO : fetch) {
System.out.println("userDTO = " + userDTO);
}
//when
//then
}
장점은 생성자를 이용하기 때문에, 만약 다른 타입이 들어가거나, 다른 인자가 더 들어가면, 컴파일 시점에서 IDE에서 에러가 뜨기때문에 좀 더 안전하게 쿼리문을 작성할 수 있다. (내가 원하는 결과를 만들 수 있다.)
Uploaded by N2T
반응형
'JPA 게시판 > JPA' 카테고리의 다른 글
QueryDsl의 설정방법— 스프링 부트 2.7버전 이전 버전기준 (0) | 2023.04.02 |
---|---|
QueryDsl DTO로 조회하는방법 (0) | 2023.04.02 |
QueryDsl에서 동적쿼리를 해결하는법 (0) | 2023.04.02 |
BaseEntity의 작성 (0) | 2023.04.02 |
@ManyToOne의 설정방법 (0) | 2023.04.02 |