관계대수: 대부분 1:n 관계
memberSQL.xml
<?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="member">
<!-- resultMap을 사용하기 위해 작성함 MEMBERID를 memberVO에있는 memberid에 매핑 시킨다 -->
<!--
property : vo의 멤버변수명
column : select문의 컬럼명
collection : 1:n의 관계(collection이 n의 관계임)
-->
<resultMap type="memberVO" id="memberMap">
<id property="memberid" column="MEMBERID" />
<result property="password" column="PASSWORD"/>
<result property="name" column="NAME"/>
<result property="email" column="EMAIL"/>
<result property="regdate" column="REGDATE"/>
<result property="introduction" column="INTRODUCTION"/>
<collection property="cardList" resultMap="cardMap">
</collection>
</resultMap>
<resultMap type="cardVO" id="cardMap">
<result property="memberid" column="MEMBERID" />
<result property="no" column="NO" />
<result property="validMonth" column="VALID_MONTH" />
</resultMap>
<!-- 회원정보 목록 : 한명의 회원이 여러 카드를 가지고 있을때(한명이 여러 카드를 가지고 있을 때 1:n관계)-->
<select id="select" resultMap="memberMap">
SELECT M.MEMBERID, M.PASSWORD, M.NAME, M.EMAIL, M.REGDATE, M.INTRODUCTION,
C.NO, C.VALID_MONTH, C.MEMBERID
FROM MEMBER M, CARD C
WHERE M.MEMBERID = C.MEMBERID
ORDER BY C.NO DESC
</select>
</mapper>
dao
//회원정보 목록
public List<MemberVO> select(){
//namespace.id
return this.sqlSessionTemplate.selectList("member.select");
}
serviceImpl
//회원정보 목록
@Override //메서드 재정의
public List<MemberVO> select(){
return memberDao.select();
}
service
public List<MemberVO> select();
controller
//골뱅이RequestMapping(value="/member/list", method = RequestMethod.GET)
//public ModelAndView list(ModelAndView mav){
//속성이 하나이면 생략이 가능함 : value / method또한 get이라 생략 가능
@RequestMapping(value="/list", method = RequestMethod.GET)
public String list(Model model) {
List<MemberVO> memberVO = this.memberService.select();
//1. 데이터를 담아서
model.addAttribute("list",memberVO);
//2. 뷰의 경로. forwarding방식(데이터를 끌어감)
return "member/list";
}