(방학특강)JPA,QueryDSL4.X강좌
– 프로젝션(Projection)과 결과반환 - 스프링실무교육학원
프로젝션 과 결과반환
조회를
원하는 SELECT의 결과대상 칼럼을 지정하는 것을 프로젝션(Projection)이라 한다.
//단일
칼럼
/*
Dept 테이블에서 사원이 한명이라도 존재하는 부서명추출, 서브쿼리 */
public
List<String> selectDeptExistsEmp() {
List<String>
depts = queryFactory.select(dept.dname).from(dept)
.where(JPAExpressions
.selectFrom(emp)
.where(emp.dept.deptno.eq(dept.deptno)).exists()
)
.fetch();
return
depts;
}
//
여러 칼럼의 값을 SELECT 하는 경우
//
com.querydsl.core.Tuple을 이용하고, 조회는 get() 메소드를 이용하면 된다.
/*
Emp 테이블에서 입력받은 부서원 이름 및 부서명을 추출하는데 Dept 테이블과 조인
부서코드를 안가지는 사원은 추출되지 않는다 */
public
List<Tuple> selectEmpEnameDnameJoinDept(Long deptno) {
List<Tuple>
emps = queryFactory
.select(emp.ename,
dept.dname)
.from(emp)
.innerJoin(emp.dept,
dept)
.where(emp.dept.deptno.eq(deptno))
.fetch();
return
emps;
}
결과를
받는쪽에서는 다음과 같이 Map을 이용하면 된다.
Map<String,
String> m = new HashMap<String, String>();
QEmp
emp = QEmp.emp;
List<Tuple>
result = empService.selectEnameJobByEmpno(empno);
for
(Tuple row : result) {
m.put(row.get(emp.ename),
row.get(emp.job));
}
댓글 없음:
댓글 쓰기