dto
@Data
@NoArgsConstructor
public class MemberDto {
private String username;
private int age;
public MemberDto(String username, int age) {
this.username = username;
this.age = age;
}
}
JPQL 예제
@Test
public void findDtoByJPQL() {
List<MemberDto> result = em.createQuery("select new study.querydsl.dto.MemberDto(m.username, m.age) from Member m", MemberDto.class)
.getResultList();
for (MemberDto dto : result) {
System.out.println(dto);
}
}
Querydsl 버전
위 방법들을 지원한다.
@Test
public void findDtoBySetter() {
List<MemberDto> result = queryFactory
.select(Projections.bean(MemberDto.class,
member.username,
member.age))
.from(member)
.fetch();
for (MemberDto dto : result) {
System.out.println(dto);
}
}
queryds이 기본 생성자를 만든 다음 setter를 이용해서 값을 주입한다.
셀렉트 구문도 깔끔하다.
@Test
public void findDtoByField() {
List<MemberDto> result = queryFactory
.select(Projections.fields(MemberDto.class,
member.username,
member.age))
.from(member)
.fetch();
for (MemberDto dto : result) {
System.out.println(dto);
}
}