图书商城:订单模块

这里写图片描述

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
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值