iBATIS - Oracle(Emp, Dept) Join 결과값 출력 형식
Posted 11 19, 2008 10:57, Filed under: Language/ㅡ iBATIS## sqlMapConfig.xml 과 sqlMap.xml 설정내용 비교 ##
-- sqlMapConfig.xml --
<!DOCTYPE sqlMapConfig PUBLIC '-//ibatis.apache.org//DTD SQL Map Config 2.0//EN' 'http://ibatis.apache.org/dtd/sql-map-config-2.dtd'>
-- sqlMap.xml --
<!DOCTYPE sqlMap PUBLIC '-//ibatis.apache.org//DTD SQL Map 2.0//EN' 'http://ibatis.apache.org/dtd/sql-map-2.dtd'>
위와 같이 다르게 설정 해주어야함
------------------------------- sqlMapConfig.xml ------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC '-//ibatis.apache.org//DTD SQL Map Config 2.0//EN' 'http://ibatis.apache.org/dtd/sql-map-config-2.dtd'>
<sqlMapConfig>
<transactionManager type="JDBC" commitRequired="false" >
<!-- // SIMPLE - 기본 -->
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@192.168.106.129:1521:ora9i"/>
<property name="JDBC.Username" value="scott"/>
<property name="JDBC.Password" value="tiger"/>
</dataSource>
</transactionManager>
<!--
<sqlMap /> 을 이용하여 여러개의 쿼리문이 담긴 xml 파일을 읽어들임
이곳에 <sqlMap />을 계속 추가를 하게됨
-->
</sqlMapConfig>
------------------------------- DeptJoinEmp.xml ------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC '-//ibatis.apache.org//DTD SQL Map 2.0//EN' 'http://ibatis.apache.org/dtd/sql-map-2.dtd'>
<sqlMap>
<typeAlias alias="dept" type="ex2.vo.Dept"/>
<typeAlias alias="emp" type="ex2.vo.Emp"/>
<resultMap id="empRes" class="emp">
<result property="deptno" column="deptno"/>
<result property="ename" column="ename"/>
<result property="job" column="job"/>
</resultMap>
<resultMap id="deptRes" class="dept">
<result property="deptno" column="deptno"/>
<result property="dname" column="dname"/>
<!--
emp_list는 List 객체
{deptno(멤버변수) = deptno(column)}
-->
<result property="emp_list" column="{deptno=deptno}" select="emp_select"/>
</resultMap>
<!--
parameterClass="emp" 객체를 호출하는거는 객체 안의 deptno 변수를 찾아서 넘겨준다.
-->
SELECT * FROM emp WHERE deptno = #deptno#
</select>
SELECT * FROM dept
</select>
</sqlMap>
------------------------------- Dept.java ------------------------------
// POJO 빈
package ex2.vo;
import java.util.List;
public class Dept {
private int deptno;
private String dname;
// 현재 부서의 구성원(Emp)들을 저장할 곳
List<Emp> emp_list;
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public List<Emp> getEmp_list() {
return emp_list;
}
public void setEmp_list(List<Emp> emp_list) {
this.emp_list = emp_list;
}
}
------------------------------- Emp.java ------------------------------
// POJO 빈
package ex2.vo;
public class Emp {
private int deptno; // 조건 값
private String ename, job;
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
------------------------------- DeptJoinEmp.java ------------------------------
// main 클래스 파일
package ex2.client;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import ex2.vo.Dept;
import ex2.vo.Emp;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
public class DeptJoinClient {
public static void main(String[] args) throws IOException, SQLException{
Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
SqlMapClient map = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
List<Dept> list = map.queryForList("dept_select");
for(Dept d : list){
// 해당 부서에 존재하는 사원들의 정보
List<Emp> e_list = d.getEmp_list();
System.out.println(d.getDname()+"-"+d.getDeptno()+"("+e_list.size()+")");
for(Emp e : e_list){
System.out.println(" --> "+ e.getEname()+"("+e.getJob()+")");
}
}
}
}
----------------------------------- 결과 값 ----------------------------------------
ACCOUNTING-10(3)
--> CLARK(MANAGER)
--> KING(PRESIDENT)
--> MILLER(CLERK)
RESEARCH-20(5)
--> SMITH(CLERK)
--> JONES(MANAGER)
--> SCOTT(ANALYST)
--> ADAMS(CLERK)
--> FORD(ANALYST)
SALES-30(6)
--> ALLEN(SALESMAN)
--> WARD(SALESMAN)
--> MARTIN(SALESMAN)
--> BLAKE(MANAGER)
--> TURNER(SALESMAN)
--> JAMES(CLERK)
OPERATIONS-40(0)
"Language / ㅡ iBATIS" 분류의 다른 글
| iBATIS - DAO 개념 사용. 싱글턴 DaoManager (0) | 2008/11/21 |
| iBATIS - sqlMap.xml(상속관계) , 조인 쿼리 (0) | 2008/11/20 |
| iBATIS - 이용 POJO빈에서 객체 값 가져오기 (0) | 2008/11/19 |
Trackback URL : http://develop.sunshiny.co.kr/trackback/8