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、確認收貨

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