程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> javaweb圖書商城設計之訂單模塊(5)

javaweb圖書商城設計之訂單模塊(5)

編輯:關於JAVA

javaweb圖書商城設計之訂單模塊(5)。本站提示廣大學習愛好者:(javaweb圖書商城設計之訂單模塊(5))文章只能為提供參考,不一定能成為您想要的結果。以下是javaweb圖書商城設計之訂單模塊(5)正文


這篇文章是針對javaweb圖書商城中訂單模塊的研討,

1、創立相關類

domain:
Order
OrderItem
dao:OrderDao
service:OrderService
web.servlete:OrderServlet

/**
 * 訂單條目類
 */
public class OrderItem {
 private String iid;
 private int count;// 數量
 private double subtotal;// 小計
 private Order order;// 所屬訂單
 private Book book;// 所要購置的圖書
}
/**
 * 訂單類
 */
public class Order {
 private String oid;
 private Date ordertime;// 下單時間
 private double total;// 算計
 private int state;// 訂單形態有四種:1未付款 2已付款但未發貨 3已發貨但未確認收貨 4已確認買賣成功
 private User owner;// 訂單一切者
 private String address;// 收貨地址

 private List<OrderItem> orderItemList;//以後訂單下一切條目 
}


public class OrderDao {
 private QueryRunner qr = new TxQueryRunner();

 /**
  * 添加訂單
  * @param order
  */
 public void addOrder(Order order) {
  try {
   String sql = "insert into orders values(?,?,?,?,?,?)";
   /*
    * 處置util的Date轉換成sql的Timestamp
    */
   Timestamp timestamp = new Timestamp(order.getOrdertime().getTime());
   Object[] params = {order.getOid(), timestamp, order.getTotal(),
     order.getState(), order.getOwner().getUid(),
     order.getAddress()};
   qr.update(sql, params);
  } catch(SQLException e) {
   throw new RuntimeException(e);
  }
 }

 /**
  * 拔出訂單條目
  * @param orderItemList
  */
 public void addOrderItemList(List<OrderItem> orderItemList) {
  /**
   * QueryRunner類的batch(String sql, Object[][] params)
   * 其中params是多個一維數組!
   * 每個一維數組都與sql在一同執行一次,多個一維數組就執行屢次
   */
  try {
   String sql = "insert into orderitem values(?,?,?,?,?)";
   /*
    * 把orderItemList轉換成兩維數組
    * 把一個OrderItem對象轉換成一個一維數組
    */
   Object[][] params = new Object[orderItemList.size()][];
   // 循環遍歷orderItemList,運用每個orderItem對象為params中每個一維數組賦值
   for(int i = 0; i < orderItemList.size(); i++) {
    OrderItem item = orderItemList.get(i);
    params[i] = new Object[]{item.getIid(), item.getCount(), 
      item.getSubtotal(), item.getOrder().getOid(),
      item.getBook().getBid()}; 
   }
   qr.batch(sql, params);//執行批處置
  } catch(SQLException e) {
   throw new RuntimeException(e);
  }
 }

 /**
  * 按uid查詢訂單
  * @param uid
  * @return
  */
 public List<Order> findByUid(String uid) {
  /*
   * 1. 經過uid查詢出以後用戶的一切List<Order>
   * 2. 循環遍歷每個Order,為其加載他的一切OrderItem
   */
  try {
   /*
    * 1. 失掉以後用戶的一切訂單
    */
   String sql = "select * from orders where uid=?";
   List<Order> orderList = qr.query(sql, new BeanListHandler<Order>(Order.class), uid);

   /*
    * 2. 循環遍歷每個Order,為其加載它自己一切的訂單條目
    */
   for(Order order : orderList) {
    loadOrderItems(order);//為order對象添加它的一切訂單條目
   }

   /*
    * 3. 前往訂單列表
    */
   return orderList;
  } catch(SQLException e) {
   throw new RuntimeException(e);
  }
 }

 /**
  * 加載指定的訂單一切的訂單條目
  * @param order
  * @throws SQLException 
  */
 private void loadOrderItems(Order order) throws SQLException {
  /*
   * 查詢兩張表:orderitem、book
   */
  String sql = "select * from orderitem i, book b where i.bid=b.bid and oid=?";
  /*
   * 由於一行後果集對應的不再是一個javabean,所以不能再運用BeanListHandler,而是MapListHandler
   */
  List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler(), order.getOid());
  /*
   * mapList是多個map,每個map對應一行後果集
   * 一行:
   * {iid=C7AD5492F27D492189105FB50E55CBB6, count=2, subtotal=60.0, oid=1AE8A70354C947F8B81B80ADA6783155, bid=7, bname=通曉Hibernate,price=30.0, author=張衛琴, image=book_img/8991366-1_l.jpg" />

3、我的訂單(按用戶查)

4、加載訂單(按id查)

5、確認收貨

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved