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、確認收貨
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支持。