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;
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(?,?,?,?,?,?)";
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(?,?,?,?,?)";
Object[][] params = new Object[orderItemList.size()][];
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) {
try {
String sql = "select * from orders where uid=?";
List<Order> orderList = qr.query(sql, new BeanListHandler<Order>(Order.class), uid);
for(Order order : orderList) {
loadOrderItems(order);
}
return orderList;
} catch