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>

삭제 완료
