국비지원교육 (22.01-22.07)/강의노트

22-05-18(수) 077일차 [Oracle, Spring Framework, Mybatis Framework] 서브쿼리, 장바구니 만들어서 넣기

옌炎 2022. 6. 17. 19:30
728x90

수업내용


1교시 (09:30-10:20)

  • 조언
    • 면접보고 비대면으로 듣는데 마이크 연결이 안되어서 못들었음

2교시 (10:30-11:20)

  • 날짜와 시간
    time.ewha.or.kr/domestic.html

    윈도우 10 :
    제어판 - 날짜 및 시간 - 인터넷 시간

    설정 변경을 클릭 후 ntp 서버 주소를 입력합니다.

    참고로 NTP 서버 목록은 다음과 같습니다.
    LG U+ : time.bora.net
    KT : ntp.kornet.net
    google : time.google.com

    윈도우 + R
    service.msc
    msc : Microsoft Common Console

    서비스(윈도우 서비스창)
    Window Time 항목 더블 클릭

    Window Time 항목 더블 클릭

    Window Time 속성(로컴컴퓨터)
    시작 유형(E) : 자동으로 설정

    시작 선택

    복구 탭

    첫째 실패(F) : 서비스 다시 시작
    둘째 실패(S) : 서비스 다시 시작
    후속 실패(U) : 동작하지 않음

3교시 (11:30-12:20)

장바구니 만들어서 넣기

  • mybatis-congif.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
		  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<typeAliases>
		<typeAlias type="a.b.c.com.kosmo.product.vo.KosmoProductVO" alias="kosmoproductvo"/>
		<typeAlias type="a.b.c.com.kosmo.cart.vo.KosmoCartVO" alias="kosmocartvo" />
	</typeAliases>
</configuration>
  • spring_cart.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="a.b.c.com.kosmo.cart.dao.KosmoCartDAO">

<insert id="kosmoCartInsert" parameterType="kosmocartvo" >
	
	INSERT INTO KOSMO_CART (	KCNUM, KPID, KPNAME, 
								KPFILE, KPCNT, KPPRICE, 
								KPPRICESUM, KPNUM, KMNUM, 
								DELETEYN, INSERTDATE, UPDATEDATE)
            			VALUES( #{kcnum}, 
            					#{kpid}, 
            					#{kpname},
								#{kpfile},            					             					
            					#{kpcnt}, 
            					#{kpprice},
            					#{kppricesum}, 
            					#{kpnum}, 
            					#{kmnum},
            					'Y', 
            					SYSDATE, 
            					SYSDATE)
</insert>

<select id="kosmoCartSelectAll" parameterType="kosmocartvo" resultType="kosmocartvo">	
	
		SELECT 	A.KCNUM 		KPNUM
		       ,A.KPID 			KPID
		       ,A.KPNAME 		KPNAME
		       ,A.KPCNT 		KPCNT
		       ,A.KPFILE 		KPFILE
		       ,A.KPPRICE 		KPPRICE
		       ,A.KPPRICESUM 	KPPRICESUM
		       ,A.KPNUM 		KPNUM
		       ,A.KMNUM 		KMNUM
		       ,A.DELETEYN 	DELETEYN
		       ,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD') INSERTDATE
		       ,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD') UPDATEDATE	  
		FROM 	KOSMO_CART A
		WHERE 	A.DELETEYN = 'Y'
		AND 	A.KMNUM = #{kmnum} 	
		ORDER BY 1 DESC  
	
</select>

</mapper>
  • spring_chabun.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="a.b.c.com.kosmo.common.dao.SpringChabunDAO">

<select id="getProductChabun" resultType="kosmoproductvo">
	SELECT /*+ INDEX_DESC(A SYS_C0012888) */ NVL(MAX(SUBSTR(A.KPNUM, -4)), 0) + 1  KPNUM FROM KOSMO_PRODUCT A
</select>

<select id="getCartChabun" resultType="kosmocartvo">
	SELECT /*+ INDEX_DESC(A SYS_C0011101) */ NVL(MAX(SUBSTR(A.KCNUM, -4)), 0) + 1  KCNUM FROM KOSMO_CART A
</select>

</mapper>
  • KosmoCartVO.java
package a.b.c.com.kosmo.cart.vo;

public class KosmoCartVO {
	
	private String kcnum;
	private String kpid;
	private String kpname;
	private String kpfile;
	private String kpcnt;
	private String kpprice;
	private String kppricesum;	
	private String kpnum;
	private String kmnum;
	private String deleteyn;
	private String insertdate;
	private String updatedate;
	
	// 생성자 
	public KosmoCartVO() {
		
	}

	public KosmoCartVO(String kcnum, String kpid, String kpname, String kpfile, String kpcnt, String kpprice,
			String kppricesum, String kpnum, String kmnum, String deleteyn, String insertdate, String updatedate) {
		
		this.kcnum = kcnum;
		this.kpid = kpid;
		this.kpname = kpname;
		this.kpfile = kpfile;
		this.kpcnt = kpcnt;
		this.kpprice = kpprice;
		this.kppricesum = kppricesum;
		this.kpnum = kpnum;
		this.kmnum = kmnum;
		this.deleteyn = deleteyn;
		this.insertdate = insertdate;
		this.updatedate = updatedate;
	}

	// setter/getter
	public String getKcnum() {
		return kcnum;
	}

	public String getKpid() {
		return kpid;
	}

	public String getKpname() {
		return kpname;
	}

	public String getKpfile() {
		return kpfile;
	}

	public String getKpcnt() {
		return kpcnt;
	}

	public String getKpprice() {
		return kpprice;
	}

	public String getKppricesum() {
		return kppricesum;
	}

	public String getKpnum() {
		return kpnum;
	}

	public String getKmnum() {
		return kmnum;
	}

	public String getDeleteyn() {
		return deleteyn;
	}

	public String getInsertdate() {
		return insertdate;
	}

	public String getUpdatedate() {
		return updatedate;
	}

	public void setKcnum(String kcnum) {
		this.kcnum = kcnum;
	}

	public void setKpid(String kpid) {
		this.kpid = kpid;
	}

	public void setKpname(String kpname) {
		this.kpname = kpname;
	}

	public void setKpfile(String kpfile) {
		this.kpfile = kpfile;
	}

	public void setKpcnt(String kpcnt) {
		this.kpcnt = kpcnt;
	}

	public void setKpprice(String kpprice) {
		this.kpprice = kpprice;
	}

	public void setKppricesum(String kppricesum) {
		this.kppricesum = kppricesum;
	}

	public void setKpnum(String kpnum) {
		this.kpnum = kpnum;
	}

	public void setKmnum(String kmnum) {
		this.kmnum = kmnum;
	}

	public void setDeleteyn(String deleteyn) {
		this.deleteyn = deleteyn;
	}

	public void setInsertdate(String insertdate) {
		this.insertdate = insertdate;
	}

	public void setUpdatedate(String updatedate) {
		this.updatedate = updatedate;
	}

	
}
  • SpringChabunDAO.java
package a.b.c.com.kosmo.common.dao;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;

public interface SpringChabunDAO {

	public KosmoProductVO getProductChabun();
	public KosmoCartVO getCartChabun();
	
}
  • SpringChabunDAOImpl.java
package a.b.c.com.kosmo.common.dao;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;

@Repository
public class SpringChabunDAOImpl implements SpringChabunDAO {

	Logger logger = LogManager.getLogger(SpringChabunDAOImpl.class);
	
	@Autowired(required=false)
	private SqlSessionTemplate sqlSession;
	
	@Override
	public KosmoProductVO getProductChabun() {
		// TODO Auto-generated method stub
		return sqlSession.selectOne("getProductChabun");
	}
	
	@Override
	public KosmoCartVO getCartChabun() {
		// TODO Auto-generated method stub
		return sqlSession.selectOne("getCartChabun");
	}
}
  • SpringChabunService.java
package a.b.c.com.kosmo.common.service;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;

public interface SpringChabunService {

	public KosmoProductVO getProductChabun();
	
	public KosmoCartVO getCartChabun();
}
  • SpringChabunServiceImpl.java
package a.b.c.com.kosmo.common.service;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import a.b.c.com.kosmo.common.dao.SpringChabunDAO;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;

@Service
@Transactional
public class SpringChabunServiceImpl implements SpringChabunService {

	Logger logger = LogManager.getLogger(SpringChabunServiceImpl.class);
	
	@Autowired(required=false)
	private SpringChabunDAO springChabunDAO;
	
	@Override
	public KosmoProductVO getProductChabun() {
		// TODO Auto-generated method stub
		logger.info("SpringChabunServiceImpl getProductChabun >>> : ");
		return springChabunDAO.getProductChabun();
	}

	@Override
	public KosmoCartVO getCartChabun() {
		// TODO Auto-generated method stub
		logger.info("SpringChabunServiceImpl getCartChabun >>> : ");
		
		return springChabunDAO.getCartChabun();
	}
}

4교시 (12:30-13:20)

장바구니 만들어서 넣기

  • KosmoCartDAO.java
package a.b.c.com.kosmo.cart.dao;

import java.util.List;

import a.b.c.com.kosmo.cart.vo.KosmoCartVO;

public interface KosmoCartDAO {
	
	public int kosmoCartInsert(KosmoCartVO kcvo);
	public List<KosmoCartVO> kosmoCartSelectAll(KosmoCartVO kcvo);
}
  • KosmoCartDAOImpl.java
package a.b.c.com.kosmo.cart.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import a.b.c.com.kosmo.cart.vo.KosmoCartVO;

@Repository
public class KosmoCartDAOImpl implements KosmoCartDAO {
	Logger logger = LogManager.getLogger(KosmoCartDAOImpl.class);
	
	@Autowired(required=false)
	private SqlSession sqlSession;

	@Override
	public int kosmoCartInsert(KosmoCartVO kcvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoCartDAOImpl kosmoCartInsert 함수 진입 >>> : ");			
		return (Integer)sqlSession.insert("kosmoCartInsert", kcvo);
	}

	@Override
	public List<KosmoCartVO> kosmoCartSelectAll(KosmoCartVO kcvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoCartDAOImpl kosmoCartInsert 함수 진입 >>> : ");	
		return sqlSession.selectList("kosmoCartSelectAll", kcvo);
	}
}
  • KosmoCartService.java
package a.b.c.com.kosmo.cart.service;

import java.util.List;

import a.b.c.com.kosmo.cart.vo.KosmoCartVO;

public interface KosmoCartService {

	public int kosmoCartInsert(KosmoCartVO kcvo);
	public List<KosmoCartVO> kosmoCartSelectAll(KosmoCartVO kcvo);
}
  • KosmoCartServiceImpl.java
package a.b.c.com.kosmo.cart.service;

import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import a.b.c.com.kosmo.cart.dao.KosmoCartDAO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;

@Service
@Transactional
public class KosmoCartServiceImpl implements KosmoCartService {
	Logger logger = LogManager.getLogger(KosmoCartServiceImpl.class);;
	
	// 서비스에서 DAO 연결하기 
	// 필드 @Autowired 어노테이션으로  DI (의존성 주입하기)
	@Autowired(required=false)
	private KosmoCartDAO kosmoCartDAO;

	@Override
	public int kosmoCartInsert(KosmoCartVO kcvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoCartServiceImpls kosmoCartInsert 함수 진입 >>> : ");		
		return kosmoCartDAO.kosmoCartInsert(kcvo);
	}

	@Override
	public List<KosmoCartVO> kosmoCartSelectAll(KosmoCartVO kcvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoCartServiceImpls kosmoCartSelectAll 함수 진입 >>> : ");		
		return kosmoCartDAO.kosmoCartSelectAll(kcvo);
	}

}

5교시 (14:30-15:20)

장바구니 만들어서 넣기

  • NulUtil.java
package a.b.c.com.kosmo.common;

public abstract class NulUtil {
	
	public static String comma_replace(String s) {
		return s.replace(",","");
	}
}

6교시 (15:30-16:20)

장바구니 만들어서 넣기

  • KosmoCartController.java
package a.b.c.com.kosmo.cart.controller;

import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import a.b.c.com.kosmo.cart.service.KosmoCartService;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.common.ChabunUtil;
import a.b.c.com.kosmo.common.NulUtil;
import a.b.c.com.kosmo.common.service.SpringChabunService;

@Controller
public class KosmoCartController {
	Logger logger = LogManager.getLogger(KosmoCartController.class);
	
	// 필드 오토와이어드 
	@Autowired(required=false)	
	private SpringChabunService springChabunService;
	
	// 필드 오토와이어드 
	@Autowired(required=false)
	private KosmoCartService kosmoCartService;
	
	@RequestMapping(value="kosmoCartInsert", method=RequestMethod.GET)
	public String kosmoCartInsert(KosmoCartVO kcvo) {	
		logger.info("KosmoCartController kosmoCartInsert 함수 진입 >>> : ");	
		
		// 채번 
		String kcnum = ChabunUtil.getCartChabun("D", springChabunService.getCartChabun().getKcnum());
		kcvo.setKcnum(kcnum);
		logger.info("KosmoCartController kosmoCartInsert 함수 진입 >>> : kcnum " + kcnum);
		
		logger.info("kcvo.getKcnum() >>> : " + kcvo.getKcnum());
		logger.info("kcvo.getKpid() >>> : " + kcvo.getKpid());
		logger.info("kcvo.getKpname() >>> : " + kcvo.getKpname());
		logger.info("kcvo.getKpfile() >>> : " + kcvo.getKpfile());
		kcvo.setKpprice(NulUtil.comma_replace(kcvo.getKpprice()));
		logger.info("kcvo.getKpprice() >>> : " + kcvo.getKpprice());
		kcvo.setKppricesum(NulUtil.comma_replace(kcvo.getKppricesum()));
		logger.info("kcvo.getKppricesum() >>> : " + kcvo.getKppricesum());
		logger.info("kcvo.getKpnum() >>> : " + kcvo.getKpnum());
		logger.info("kcvo.getKmnum() >>> : " + kcvo.getKmnum());
		
		// 서비스 호출
		int nCnt = kosmoCartService.kosmoCartInsert(kcvo);
				
		if (nCnt > 0) {
			logger.info("KosmoProductController kosmoProductInsert nCnt >>> : " + nCnt);
			return "cart/kosmoCartInsert";
		}
					
		return "prodcut/kosmoProductSelectAll";
	}
	
	// 카트 목록 
	@RequestMapping(value="kosmoCartSelectAll", method=RequestMethod.GET)
	public String kosmoCartSelectAll(KosmoCartVO kcvo, Model model) {
		logger.info("KosmoCartController kosmoCartSelectAll 함수 진입 >>> : ");
		
		kcvo.setKmnum("1234");
		logger.info("kcvo.getKmnum() >>> : " + kcvo.getKmnum());
		
		// 페이징 처리
		
		// 서비스 호출
		List<KosmoCartVO> listAll = kosmoCartService.kosmoCartSelectAll(kcvo);		
		if (listAll.size() > 0) { 
			logger.info("KosmoCartController KosmoCartController listAll.size() >>> : " + listAll.size());		
			model.addAttribute("listAll", listAll);
			return "cart/kosmoCartSelectAll";
		}		
		return "product/kosmoProductSelectAll";
	}
}

7교시 (16:30-17:20)

장바구니 만들어서 넣기

  • kosmoCartInsert.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>kosmoCartInsert.jsp</h3>
<hr>
<script>
	location.href="/kosmoSpring/kosmoCartSelectAll.k";
</script>
</body>
</html>
  • kosmoCartSelectAll.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="a.b.c.com.kosmo.cart.vo.KosmoCartVO" %> 
<%@ page import="java.util.List" %>  

<%@ page import="a.b.c.com.kosmo.common.NumUtil" %>

<% request.setCharacterEncoding("UTF-8");%> 
<%

	Object obj = request.getAttribute("listAll");
	List<KosmoCartVO> list = (List<KosmoCartVO>)obj;
	
	int nCnt = list.size();
	System.out.println("nCnt >>> : " + nCnt);	
%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="/kosmoSpring/js/common.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script type="text/javascript">

	$(document).ready(function(){
		
		$(document).on("click", "#chek", function(){				
			if($(this).prop('checked')){			 			
				$('.kcnum').prop('checked',true);				
			}else{
				$('.kcnum').prop('checked',false);
			}
		});
		
	});	

</script>
</head>
<body>
<h3 align="center">장바구니</h3>
<hr>
<form name="productList" id="productList">
<table border="1" align="center">
<thead>
<tr>
	<td align="center">
		<input type="checkbox" name="chek" id="chek" class="chek">
	</td>
	<td align="center">상품명</td>
	<td align="center">가격</td>
	<td align="center">수량</td>
	<td align="center">합계</td>	
	<td align="center">적립금</td>	
	<td align="center">배송비</td>
	<td align="center">관심상품/삭제</td>		
</tr>
</thead>
<%
String kpnum = "";
String kpprice = "";
String kppricesum = "";
for(int i=0; i<nCnt; i++){		
	KosmoCartVO _kcvo = list.get(i);
	kpprice = NumUtil.comma(_kcvo.getKpprice());
	kppricesum = NumUtil.comma(_kcvo.getKppricesum());
%>
<tbody>
<tr>
	<td align="center">
		<input type="checkbox" name="kcnum" id="kcnum" class="kcnum" value=<%= _kcvo.getKcnum() %> >
	</td>		
	<td class="tt">
		<img src="/kosmoSpring/fileupload/product/<%= _kcvo.getKpfile() %>" width="50" height="50">
		<%= _kcvo.getKpid() %> 
	</td>
	<td class="tt"><%= kpprice %> </td>
	<td class="tt"><%= _kcvo.getKpcnt() %> </td>
	<td class="tt"><%= kppricesum %> </td>
	<td class="tt">적립금</td>
	<td class="tt">배송비</td>
	<td class="tt" align="center">		
		<input type="button" value="관심상품" /><br>
		<input type="button" value="삭제" /><br>
	</td>	
</tr>	
<%
}//end of for
%>	
<tr>
<td colspan="8" align="right">총 구매 금액 000,000원</td>
</tr>
<tr>
<td colspan="8" align="right">
	결제 예정금액 <font size="5" style="color:red;">000,000</font>원
</td>
</tr>
<tr>
	<td colspan="8" align="left">		
		<input type="button" value="선택삭제" id='delBtn'>	
		<input type="button" value="장바구니 비우기" id='delAllBtn'>
		 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
		<input type="button" value="쇼핑하기" id='shopingBtn'>							
		<input type="button" value="주문하기" id='buyBtn'>							
	</td>
</tr>					
</tbody>			
</table>
</form>	
</body>
</html>

8교시 (17:30-18:30)

장바구니 만들어서 넣기

  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>index.jsp</h3>
<hr>
<a href="kosmoProductInsertForm.k">코스모 상품 입력</a><br>
<a href="kosmoProductSelectAll.k">코스모 상품  전체조회</a><br>
</body>
</html>


Notes


728x90