마이바티스 어노테이션 이용

마이바티스 어노테이션 이용

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;
 }
}