마이바티스 어노테이션 이용
list.jsp
<%@ page language=”java” contentType=”text/html; charset=EUC-KR”
pageEncoding=”EUC-KR” import=”java.util.*,com.dao.*”%>
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
<%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt” %>
<%
List<MyEmpVO> list=MyEmpDAO.empdeptAllData();
%>
<c:set var=”list” value=”<%=list%>”></c:set>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd“>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
</head>
<body>
<table border=1 width=”600″>
<tr>
<th>사번</th>
<th>이름</th>
<th>직위</th>
<th>입사일</th>
<th>급여</th>
<th>부서번호</th>
<th>부서명</th>
<th>근무지</th>
</tr>
<c:forEach var=”vo” items=”${list}”>
<tr>
<td>${vo.empno}</td>
<td>${vo.ename}</td>
<td>${vo.job}</td>
<td>
<fmt:formatDate value=”${vo.hiredate}” pattern=”yyyy-MM-dd”/>
</td>
<td>${vo.sal}</td>
<td>${vo.deptno}</td>
<td>${vo.mdv.dname}</td>
<td>${vo.mdv.loc}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
MyEmpDAO.java
package com.dao;
import java.io.Reader;
import java.util.*;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyEmpDAO {
private static SqlSessionFactory ssf;
private static MyMapper mMapper=null;
static
{
try
{
Reader reader=Resources.getResourceAsReader(“Config.xml”);
// XML 파싱
ssf=new SqlSessionFactoryBuilder().build(reader);
reader.close();
Class[] mapper={com.dao.MyMapper.class};//인터페이스 전체를 모아서 구현해줌
for(Class m:mapper){
//클래스를 읽어서 메모리 할당
ssf.getConfiguration().addMapper(m);//메소드가 전부 구현되었음.
}
//구현된 메모리 객체를 받는다.
mMapper=ssf.openSession(true).getMapper(MyMapper.class);//구현된 주소를 가져옴.
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
public static List<MyEmpVO> empdeptAllData(){
return mMapper.empdeptAllData();
}
}
MyMapper.java(인터페이스)
package com.dao;
import java.util.List;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
public interface MyMapper {
// while(rs.next()){
// My EmpVO vo=new MyEmpVO();
// vo.setEmpno(rs.getInt(“empno”))
// }
//조인시 데이터 맞춰놓기
@Results({
@Result(column=”empno”,property=”empno”),
@Result(column=”ename”,property=”ename”),
@Result(column=”job”,property=”job”),
@Result(column=”hiredate”,property=”hiredate”),
@Result(column=”sal”,property=”sal”),
@Result(column=”deptno”,property=”deptno”),
@Result(column=”dname”,property=”mdv.dname”),
@Result(column=”loc”,property=”mdv.loc”)
})
//프로펄티에 컬럼 집어넣어라.
@Select(“SELECT empno,ename,job,hiredate,sal,e.deptno,dname,loc”
+ ” FROM myEmp e,myDept d”
+ ” WHERE e.deptno=d.deptno”)
public List<MyEmpVO> empdeptAllData();
}
MyEmpVO.java
package com.dao;
import java.util.Date;
public class MyEmpVO {
private int empno;
private String ename;
private String job;
private Date hiredate;
private int sal;
private int deptno;
private MyDeptVO mdv=new MyDeptVO();
public MyDeptVO getMdv() {
return mdv;
}
public void setMdv(MyDeptVO mdv) {
this.mdv = mdv;
}
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
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;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public int getSal() {
return sal;
}
public void setSal(int sal) {
this.sal = sal;
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
}
MyDeptVO.java
package com.dao;
public class MyDeptVO {
private int deptno;
private String dname;
private String loc;
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 String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}