예시) LPROD(1)와 BUYER(N) 관계에서 buyerVO를 list로 반환하기
1. <select> 작성
<select id="아이디" resultMap="반환할 VO객체의 Map명">
조회할 쿼리문 작성
</select>
2. resultMap 작성
<resultMap type="<select>에서 작성한 VO객체명" id="<select>에서 작성한 resultMap명">
<result property="VO객체의 멤버변수명" column="컬럼명" />
<collection property="1:N 관계 중 N에 해당하는 VO객체명" resultMap="반환할 VO객체의 map명">
</collection>
</resultMap>
3. 1:N 관계 속성 중 N에 해당하는 resultMap 작성
<resultMap type="1:N 관계 중 N에 해당하는 VO객체명" id="<collection>에서 작성한 resultMap명">
<result property="VO객체의 멤버변수명" column="컬럼명"/>
</resultMap>
package kr.or.ddit;
import java.util.List;
public class LprodVO {
private int lprodId;
private String lprodGu;
private String lprodNm;
//Lprod : Buyer = 1 : N 관계
private List<BuyerVO> BuyerVO;
public int getLprodId() {
return lprodId;
}
public void setLprodId(int lprodId) {
this.lprodId = lprodId;
}
public String getLprodGu() {
return lprodGu;
}
public void setLprodGu(String lprodGu) {
this.lprodGu = lprodGu;
}
public String getLprodNm() {
return lprodNm;
}
public void setLprodNm(String lprodNm) {
this.lprodNm = lprodNm;
}
public List<BuyerVO> getBuyerVO() {
return BuyerVO;
}
public void setBuyerVO(List<BuyerVO> buyerVO) {
BuyerVO = buyerVO;
}
@Override
public String toString() {
return "LprodVO [lprodId=" + lprodId + ", lprodGu=" + lprodGu + ", lprodNm=" + lprodNm + ", BuyerVO=" + BuyerVO
+ "]";
}
}
package kr.or.ddit;
import java.util.List;
//자바빈 클래스
public class BuyerVO {
//멤버변수
private String buyerId;
private String buyerName;
private String buyerLgu;
private String buyerBank;
private String buyerBankno;
private String buyerBankname;
private String buyerZip;
private String buyerAdd1;
private String buyerAdd2;
private String buyerComtel;
private String buyerFax;
private String buyerMail;
private String buyerCharger;
private String buyerTelext;
//Buyer : ProdVO = 1: N 관계
private List<ProdVO> ProdVO;
//getter/setter 메소드
public String getBuyerId() {
return buyerId;
}
public void setBuyerId(String buyerId) {
this.buyerId = buyerId;
}
public String getBuyerName() {
return buyerName;
}
public void setBuyerName(String buyerName) {
this.buyerName = buyerName;
}
public String getBuyerLgu() {
return buyerLgu;
}
public void setBuyerLgu(String buyerLgu) {
this.buyerLgu = buyerLgu;
}
public String getBuyerBank() {
return buyerBank;
}
public void setBuyerBank(String buyerBank) {
this.buyerBank = buyerBank;
}
public String getBuyerBankno() {
return buyerBankno;
}
public void setBuyerBankno(String buyerBankno) {
this.buyerBankno = buyerBankno;
}
public String getBuyerBankname() {
return buyerBankname;
}
public void setBuyerBankname(String buyerBankname) {
this.buyerBankname = buyerBankname;
}
public String getBuyerZip() {
return buyerZip;
}
public void setBuyerZip(String buyerZip) {
this.buyerZip = buyerZip;
}
public String getBuyerAdd1() {
return buyerAdd1;
}
public void setBuyerAdd1(String buyerAdd1) {
this.buyerAdd1 = buyerAdd1;
}
public String getBuyerAdd2() {
return buyerAdd2;
}
public void setBuyerAdd2(String buyerAdd2) {
this.buyerAdd2 = buyerAdd2;
}
public String getBuyerComtel() {
return buyerComtel;
}
public void setBuyerComtel(String buyerComtel) {
this.buyerComtel = buyerComtel;
}
public String getBuyerFax() {
return buyerFax;
}
public void setBuyerFax(String buyerFax) {
this.buyerFax = buyerFax;
}
public String getBuyerMail() {
return buyerMail;
}
public void setBuyerMail(String buyerMail) {
this.buyerMail = buyerMail;
}
public String getBuyerCharger() {
return buyerCharger;
}
public void setBuyerCharger(String buyerCharger) {
this.buyerCharger = buyerCharger;
}
public String getBuyerTelext() {
return buyerTelext;
}
public void setBuyerTelext(String buyerTelext) {
this.buyerTelext = buyerTelext;
}
public List<ProdVO> getProdVO() {
return ProdVO;
}
public void setProdVO(List<ProdVO> prodVO) {
ProdVO = prodVO;
}
@Override
public String toString() {
return "BuyerVO [buyerId=" + buyerId + ", buyerName=" + buyerName + ", buyerLgu=" + buyerLgu + ", buyerBank="
+ buyerBank + ", buyerBankno=" + buyerBankno + ", buyerBankname=" + buyerBankname + ", buyerZip="
+ buyerZip + ", buyerAdd1=" + buyerAdd1 + ", buyerAdd2=" + buyerAdd2 + ", buyerComtel=" + buyerComtel
+ ", buyerFax=" + buyerFax + ", buyerMail=" + buyerMail + ", buyerCharger=" + buyerCharger
+ ", buyerTelext=" + buyerTelext + ", ProdVO=" + ProdVO + "]";
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="lprod">
<resultMap type="lprodVO" id="lprodMap">
<result property="lprodGu" column="LPROD_GU" />
<result property="lprodNm" column="LPROD_NM" />
<collection property="buyerVO" resultMap="buyerMap">
</collection>
</resultMap>
<resultMap type="buyerVO" id="buyerMap">
<result property="buyerId" column="BUYER_ID"/>
<result property="buyerName" column="BUYER_NAME"/>
</resultMap>
<select id="list" resultMap="lprodMap">
SELECT L.LPROD_GU
, L.LPROD_NM
, B.BUYER_ID
, B.BUYER_NAME
FROM LPROD L, BUYER B
WHERE L.LPROD_GU = B.BUYER_LGU
ORDER BY LPROD_GU ASC
</select>
</mapper>
package kr.or.ddit;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class LprodDao {
@Autowired
SqlSessionTemplate sqlSessionTemplate;
public List<LprodVO> list(){
return this.sqlSessionTemplate.selectList("lprod.list");
}
}
package kr.or.ddit;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class LprodDao {
@Autowired
SqlSessionTemplate sqlSessionTemplate;
public List<LprodVO> list(){
return this.sqlSessionTemplate.selectList("lprod.list");
}
}
package kr.or.ddit;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class LprodServiceImpl implements LprodService {
@Autowired
LprodDao lprodDao;
@Override
public List<LprodVO> list(){
return this.lprodDao.list();
}
}
package kr.or.ddit;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping(value = "/lprod")
@Controller
public class LprodController {
@Inject
LprodService lprodService;
@RequestMapping(value = "/list")
public String list(Model model) {
List<LprodVO> list = this.lprodService.list();
model.addAttribute("list", list);
return "lprod/list";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<title>분류번호 별 거래처 목록</title>
</head>
<body>
<table border="1">
<tr>
<th>번호</th>
<th>분류번호</th>
<th>분류명</th>
<th>거래처번호</th>
<th>거래처명</th>
</tr>
<c:forEach var="lprodVO" items="${list}">
<c:forEach var="buyerVO" items="${lprodVO.buyerVO}">
<c:set var="cnt" value="${i=i+1}" />
<tr>
<td>${cnt}</td>
<td>${lprodVO.lprodGu}</td>
<td>${lprodVO.lprodNm}</td>
<td>${buyerVO.buyerId}</td>
<td>${buyerVO.buyerName}</td>
</tr>
</c:forEach>
</c:forEach>
</table>
</body>
</html>