2016년 3월 23일 수요일

JPA,QueryDSL4.X강좌 – 프로젝션(Projection)과 결과반환

 프로젝션 과 결과반환 
조회를 원하는 SELECT의 결과대상 칼럼을 지정하는 것을 프로젝션(Projection)이라 한다. 

//단일 칼럼 
 
public List<String> selectDeptExistsEmp() { 
List<String> depts = queryFactory.select(dept.dname).from(dept) 
.where(JPA__EXPRESSION__s 
      .selectFrom(emp)
      .where(emp.dept.deptno.eq(dept.deptno)).exists() 
                ) 
      .fetch();
return depts; 


// 여러 칼럼의 값을 SELECT 하는 경우 
// com.querydsl.core.Tuple을 이용하고,  조회는 get() 메소드를 이용하면 된다. 
 
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)); 
} 

댓글 없음:

댓글 쓰기