Mybatis-Myshop(주문서,주문서 상세)

임재헌·2023년 5월 24일

Mybatis

목록 보기
6/6

dao

 public String orderno(String date) {
	 return sqlSession.selectOne("order.orderno",date);	 
 }
 

mapper

<select id="orderno" parameterType="String" resultType="kr.co.itwill.cart.CartDTO">
select nvl(max(orderno),'1')
from orderlist
where orderno like #{date} || '%';
</select>

controller

@RequestMapping("/insert")
public ModelAndView orderInsert(@ModelAttribute OrderDTO dto,HttpSession session) {
	//오늘날짜 및 현재시각을 문자열  년월일시분초로 구성해서 반환하기
	SimpleDateFormat sd=new SimpleDateFormat("yyyyMMddHHmmss");
	String date=sd.format(new Date());
	System.out.println(date);
	
	/*	
	 주문서 번호 생성 알고리즘 
	 최초주문 20230523171731 없으면 1
 			20230523171732 있으면 2

	대체로 문자열타입으로 관리를 한다
	숫자형으로 하는경우 long이 적합
					
	 */
	
	String orderno=orderDao.orderno(date);
	if(orderno.equals("1")) {
		orderno=date+"1";
	}else {
		int n=Integer.parseInt(orderno.substring(14))+1;
		orderno=date +n;
	}
	
	return null;
	
}


결제 총 금액 계산
Controller

//총 금액 계산하기
	int totalamount=orderDao.totalamount(s_id);
	//System.out.println(totalamount);
	
	//dto에 s_id, orderno,totalamount 담기
	dto.setOrderno(orderno);
	dto.setTotalamount(totalamount);
	dto.setId(s_id);
	
	//orderlist테이블에 행 추가
	 int cnt=orderDao.orderlistInsert(dto);
	 //System.out.println("orderlist 행추가 결과:"+cnt);
	 //받는사람, 주소 공백으로 넘기는 경우 에러 발생 주의
	 if (cnt==1) {
		//장바구니 테이블에 있는 주문상품을 orderdetail 테이블에 옮겨 담기
		HashMap<String, String>map=new HashMap<>();
		map.put("orderno", orderno);
		map.put("s_id", s_id);
	
		int result=orderDao.orderdetailInsert(map);
		System.out.println("orderdetail 행추가 결과  "+result);

DAO

public int totalamount(String s_id) {
	 return sqlSession.selectOne("order.totalamount", s_id);
 }
 
 public int orderlistInsert(OrderDTO dto) {
	 return sqlSession.insert("order.orderlistInsert", dto);
 }
 
 public int orderdetailInsert(HashMap<String, String>map) {
	 return sqlSession.delete("order.orderdetailInsert", map);
 }

MAPPER

<select id="totalamount" resultType="int" parameterType="String">
select sum(price*qty)
from cart
where id=#{s_id}
</select>

<insert id="orderlistInsert" parameterType="kr.co.itwill.order.OrderDTO">
insert into orderlist(orderno,id,totalamount,payment,receiver,rece_address,orderstate)
values(#{orderno},#{id},#{totalamount},#{payment},#{receiver},#{rece_address},'I')
</insert>

<insert id="orderdetailInsert" parameterType="java.util.HashMap">
insert into orderdetail(detailno,orderno,product_code,qty,price)
select orderdetail_seq.nextval,#{orderno},product_code,qty,price
from cart
where id=#{s_id}
</insert>

orderno totalamount 결과값 출력
orderlist orderdetail 행추가 결과 확인


controller

 //쇼핑카트 비우기
		 if (result!=0) {
		orderDao.cartDelete(s_id);
		
		//주문 내역서 메일 보내기
		
		mav.addObject("msg","<p>주문이 완료되었습니다</p>");
		mav.addObject("orderno","주문 번호:"+ orderno);
		mav.setViewName("/order/msgView");	// /web-inf/views/order/msgView.jsp
		
		
		}

DAO

 public int cartDelete(String s_id) {
	 return sqlSession.delete("order.cartDelete", s_id);
 }
 

MAPPER


<delete id="cartDelete" parameterType="String">
delete from cart
where id=#{s_id}
</delete>

View

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>msgView</title>
</head>
<body>
<h3>MySHOP 주문 내역서</h3>
${msg}
${orderno}
</body>
</html>

삭제 완료

0개의 댓글