본문 바로가기
study/Spring

[Spring] 24. Spring (주문확정[end.jsp, Sale.java, SaleItem.java, SaleDao.java, SaleItemDao.java])

by 금이패런츠 2022. 5. 10.
728x90
반응형

end.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>    
<%-- /springmvc1/src/main/webapp/WEB-INF/view/cart/end.jsp --%>
<!DOCTYPE html><html><head><meta charset="UTF-8">
<title>주문 확정 상품</title></head>
<body><h2>${sale.user.username}님이 주문하신 정보 입니다.</h2>
<h2>배송지 정보</h2>
<table><tr><td width="30%">주문아이디</td>
      <td width="70%">${sessionScope.loginUser.userid}</td></tr>
  <tr><td width="30%">이름</td>
      <td width="70%">${sessionScope.loginUser.username}</td></tr>
  <tr><td width="30%">우편번호</td>
      <td width="70%">${sessionScope.loginUser.postcode}</td></tr>
  <tr><td width="30%">주소</td>
      <td width="70%">${sessionScope.loginUser.address}</td></tr>
  <tr><td width="30%">전화번호</td>
      <td width="70%">${sessionScope.loginUser.phoneno}</td></tr>
</table>
<h2>주문 완료 상품 </h2>
<table>
  <tr><th>상품명</th><th>가격</th><th>수량</th><th>합계</th></tr>
  <c:forEach items="${sale.itemList}" var="saleitem" >
   <tr><td>${saleitem.item.name}</td>
   <td><fmt:formatNumber value="${saleitem.item.price}" pattern="###,###"/></td>
   <td>${saleitem.quantity}</td>
   <td><fmt:formatNumber value="${saleitem.item.price *saleitem.quantity}" pattern="###,###"/></td></tr>
  </c:forEach>
  <tr><td colspan="4" align="right">
      총 구입 금액 : <fmt:formatNumber value="${sale.total}" pattern="###,###"/>원
  </td></tr>
  <tr><td colspan="4">
     <a href="../item/list">상품 목록</a>&nbsp;
  </td></tr></table></body></html>

Sale.java

package logic;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Sale {
	private int saleid;
	private String userid;
	private Date saledate;
	private User user;
	private List<SaleItem> itemList = new ArrayList<SaleItem>();
	
	public int getTotal() {
		int sum = 0;
		for(SaleItem si : itemList) {
			sum += si.getItem().getPrice() * si.getQuantity();
		}
		return sum;
	}
	//setter, getter, toString

	public int getSaleid() {
		return saleid;
	}

	public void setSaleid(int saleid) {
		this.saleid = saleid;
	}

	public String getUserid() {
		return userid;
	}

	public void setUserid(String userid) {
		this.userid = userid;
	}

	public Date getSaledate() {
		return saledate;
	}

	public void setSaledate(Date saledate) {
		this.saledate = saledate;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public List<SaleItem> getItemList() {
		return itemList;
	}

	public void setItemList(List<SaleItem> itemList) {
		this.itemList = itemList;
	}

	@Override
	public String toString() {
		return "Sale [saleid=" + saleid + ", userid=" + userid + ", saledate=" + saledate + ", user=" + user + "]";
	}
}

 

SaleItem.java

 

package logic;

public class SaleItem {
	private int saleid;
	private int seq;
	private int itemid;
	private int quantity;
	private Item item;
	public SaleItem() {}
	public SaleItem(int saleid, int seq, ItemSet itemSet) {
		this.saleid = saleid;
		this.seq = seq;
		this.item = itemSet.getItem();
		this.itemid = itemSet.getItem().getId();
		this.quantity = itemSet.getQuantity();
	}
	//getter, setter, toString
	public int getSaleid() {
		return saleid;
	}
	public void setSaleid(int saleid) {
		this.saleid = saleid;
	}
	public int getSeq() {
		return seq;
	}
	public void setSeq(int seq) {
		this.seq = seq;
	}
	public int getItemid() {
		return itemid;
	}
	public void setItemid(int itemid) {
		this.itemid = itemid;
	}
	public int getQuantity() {
		return quantity;
	}
	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}
	public Item getItem() {
		return item;
	}
	public void setItem(Item item) {
		this.item = item;
	}
	@Override
	public String toString() {
		return "SaleItem [saleid=" + saleid + ", seq=" + seq + ", itemid=" + itemid + ", quantity=" + quantity
				+ ", item=" + item + "]";
	}
}

SaleDao.java

package dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.stereotype.Repository;

import logic.Sale;

@Repository
public class SaleDao {
	private NamedParameterJdbcTemplate template;
	private Map<String,Object> param = new HashMap<String,Object>();
	private RowMapper<Sale> mapper = new BeanPropertyRowMapper<>(Sale.class);
	@Autowired
	public void setDateSource(DataSource dataSource) { 
		template = new NamedParameterJdbcTemplate(dataSource);
	}
	public int getMaxSaleId() {
		return template.queryForObject("select nvl(max(saleid),0) from sale", param, Integer.class);
	}
	public void insert(Sale sale) {
		String sql = "insert into sale (saleid, userid, saledate) values (:saleid, :userid, sysdate)";
		SqlParameterSource param = new BeanPropertySqlParameterSource(sale);
		template.update(sql, param);
	}
	public List<Sale> list(String id) {
		String sql = "select * from sale where userid=:userid order by saleid desc";
		param.clear();
		param.put("userid", id);
		return template.query(sql, param, mapper);
	}
}

SaleItemDao.java

package dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.stereotype.Repository;

import logic.SaleItem;

@Repository
public class SaleItemDao {
	private NamedParameterJdbcTemplate template;
	private Map<String,Object> param = new HashMap<String,Object>();
	private RowMapper<SaleItem> mapper = new BeanPropertyRowMapper<>(SaleItem.class);
	@Autowired
	public void setDateSource(DataSource dataSource) { 
		template = new NamedParameterJdbcTemplate(dataSource);
	}
	public void insert(SaleItem saleitem) {
		String sql = "insert into saleitem (saleid, seq, itemid, quantity) values (:saleid, :seq, :itemid, :quantity)";
		SqlParameterSource param = new BeanPropertySqlParameterSource(saleitem);
		template.update(sql, param);
	}
	public List<SaleItem> list(int saleid) {
		param.clear();
		param.put("saleid", saleid);
		return template.query("select * from saleitem where saleid=:saleid", param, mapper);
	}
}
728x90
반응형