lprod-buyer 조인 해서 리스트 뽑기

조수경·2022년 2월 7일
0

Spring

목록 보기
15/43

lprod가 1이고 buyer가 n이야!!

buyer_SQL.xml

lprodVO가 buyerVO를 감싸 lprodVO에있는 buyerVO를 가져와서 buyerVO에 넣어

<?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">
  
  <!-- result라 써도 무방하지만 id라고 쓴것은 기본키임을 밝힌것  -->
<mapper namespace="buyer">
	
	<!-- list2를 위함 시작 -->
	<resultMap type="lprodVO" id="lprodMap">
		<result property="lprodId" column="LPROD_ID" />
		<result property="lprodGu" column="LPROD_GU" />
		<result property="lprodNm" column="LPROD_NM" />
		<collection property="buyerVO" resultMap="buyerMap2"></collection>
	</resultMap>
	
	<resultMap type="buyerVO" id="buyerMap2">
		<result property="buyerId" column="BUYER_ID" />
		<result property="buyerLgu" column="BUYER_LGU" />
		<result property="buyerName" column="BUYER_NAME" />
	</resultMap>
	<!-- list2를 위함 끝 -->
<!-- CLOB는 위에 처럼 처리를 해줘야함 / 하지만 VO는 String으로 씀-->

	
	<select id="list2" resultMap="lprodMap">
		SELECT B.BUYER_ID 
		    , B.BUYER_NAME 
		    , B.BUYER_LGU
		    , L.LPROD_ID 
		    , L.LPROD_GU
		    , L.LPROD_NM  
		FROM BUYER B, LPROD L
		WHERE B.BUYER_LGU = L.LPROD_GU
		ORDER BY L.LPROD_GU ASC
	</select>	
	
	
</mapper>

list2.jsp

<%@ 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>Insert title here</title>
</head>
<body>

<table border="1">
	<tr>
		<td>번호</td>
		<td>거래처명</td>
		<td>상품분류코드</td>
		<td>상품분류명</td>
	</tr>
	<c:set var="i" value="0" />
	<!-- buyerVO : 1에 대한 데이터 -->
	<c:forEach var="lprodVO" items="${list2}" varStatus="stat">
	<!-- buyerVO.lprodVO : N에 대한 데이터 -->
		<c:forEach var="buyerVO" items="${lprodVO.buyerVO}">
		<c:set var="cnt" value="${i=i+1}" />
			<tr>
				<td>${cnt}</td>
				<td>${buyerVO.buyerName}</td>
				<td>${lprodVO.lprodGu}</td>
				<td>${lprodVO.lprodNm}</td>
			</tr>
		</c:forEach>
	</c:forEach>
</table>

</body>
</html>

dao

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;

//mapper xml을 실행해주는 클래스.
//어노테이션을 붙여서 이 클래스는 데이터에 접근하는 클래스야~
//Spring에게 알려줘!
//Spring이 데이터를 관리하는 클래스라고 인지해서 자바 빈(java bean)으로 등록해서 관리
@Repository  //자바빈으로 관리(저장소)해줘! 일반 클래스 아니야~ 서블릿으로 컴팻스트해서 자바빈 접근을 해줌
public class BuyerDao {
		//sqlSessionTempate 사용
		/*
		 * new 키워드를 통해 직접 생성 안했는데 객체가 생성이 됨!! 싱기방구 
		 * 이게 바로 의존성 주입임!!!(Dependency Injection - DI)
		 * DI로 주입 받는 것임
		 * 스프링이 이미 만들어 놓은 sqlSessionTemplate 타입 객체를 BookDao 객체에 주입
		 * 이 과정은 자동으로 스프링에서 실행되며, 개발자가 직접 객체를 생성하지 않음(이것이 바로 IoC: 제어의 역전)
		 * 
		 */
		
		@Autowired//자동 주입
		SqlSessionTemplate sqlSessionTemplate;//미리 만들어 놓은 백신(root컨택스트에서 온것)

		
		public List<LprodVO> list2(){
			return this.sqlSessionTemplate.selectList("buyer.list2");
		}
		
}

serviceImpl

package kr.or.ddit;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

//어노테이션.. 스프링에게 이 클래스는 서비스 클래스임을 알려줌
//스프링이 자바 빈(java bean)으로 등록하여 관리
@Service
public class BuyerServiceImpl implements BuyerService {
	//DI(의존성 주입)
	@Autowired
	BuyerDao buyerDao;

	//거래처 별 상품 목록
	//메소드 재정의
	@Override
	
	public List<LprodVO> list2(){
		return this.buyerDao.list2();
	}
}

service

package kr.or.ddit;

import java.util.List;

public interface BuyerService {
	//메소드 시그니처 처리
	
	public List<LprodVO> list2();
}

controller

package kr.or.ddit;
//컨트롤러 어노테이션(Annotation)
//어노테이션이 있는 클래스
//스프링 프레임워크(디자인 패턴 + 라이브러리 집합)기
//웹 브라우저(크롬)의 요청(request)을 받아들이는 컨트롤러라고
//인지해서 자바 빈(java bean)으로 등록해서 관리

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="/buyer")
@Controller // 컨트롤러 지정
public class BuyerController {
	//DI(의존성 주입), IoC(제어의 역전)
	@Inject
	BuyerService buyerService;
	
	@RequestMapping(value = "/list2")
	public String list2(Model model) {
		List<LprodVO> list2 = this.buyerService.list2();
		model.addAttribute("list2", list2);
		
		return "buyer/list2";
	}
	
}
profile
신입 개발자 입니다!!!

0개의 댓글