zoukankan      html  css  js  c++  java
  • (二十二)查询订单的详情

    案例2-查询订单的详情
    需求:
        只有未付款的订单,点击"付款",跳转到订单的详情页面
    步骤分析:
        1.在订单列表,点击付款,
            /store/order?method=getById&oid=?
        2.在orderservlet中编写getById()
            接受oid
            调用service 返回Order
            将order放入域中,请求转发 order_info.jsp
        3.orderDao中 通过一个订单号,查询订单详情
            select * from orderitem oi,product p where oi.pid = p.pid and oi.oid = ?
            用mapListhandler封装结果集,然后使用BeanUtils封装成指定的bean对象 ,添加到order的items中即可
            

    /store/WebContent/jsp/order_list.jsp

                            <c:if test="${o.state==0 }">
                                                <a href="${pageContext.request.contextPath }/order?method=getById&oid=${o.oid}">付款</a>
                                            </c:if>
                                            <c:if test="${o.state==1 }">
                                                已付款
                                            </c:if>
                                            <c:if test="${o.state==2 }">
                                                <a href="#">确认收货</a>
                                            </c:if>
                                            <c:if test="${o.state==3 }">
                                                已完成
                                            </c:if>

    com.louis.web.servlet.OrderServlet

        public String getById(HttpServletRequest request, HttpServletResponse response) throws Exception {
            //1.获取oid
            String oid = request.getParameter("oid");
            
            //2.调用service 通过oid 返回值:order
            OrderService os=(OrderService) BeanFactory.getBean("OrderService");
            Order order=os.getById(oid);
            
            //3.将order放入request域中
            request.setAttribute("bean", order);
            
            return "/jsp/order_info.jsp";
        }

    com.louis.service.impl.OrderServiceImpl

        /**
         * 查看订单详情
         */
        @Override
        public Order getById(String oid) throws Exception {
            OrderDao od=(OrderDao) BeanFactory.getBean("OrderDao");
            return od.getById(oid);
        }

    com.louis.dao.impl.OrderDaoImpl

        /**
         * 通过oid 查询订单详情
         */
        @Override
        public Order getById(String oid) throws Exception {
            QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
            String sql="select * from orders where oid = ?";
            Order order = qr.query(sql, new BeanHandler<>(Order.class), oid);
            
            //封装orderitems
            sql="select * from orderitem oi,product p where oi.pid = p.pid and oi.oid = ?";
            List<Map<String, Object>> query = qr.query(sql, new MapListHandler(), oid);
            for (Map<String, Object> map : query) {
                //封装product
                Product product = new Product();
                BeanUtils.populate(product, map);
                
                //封装orderitem
                OrderItem oi = new OrderItem();
                BeanUtils.populate(oi, map);
                oi.setProduct(product);
                
                //将orderitem假如中order的items中
                order.getItems().add(oi);
            }
            return order;
        }

  • 相关阅读:
    c# 启动线程的方式
    c# 打开文件夹获取所有文件
    windows server 2008 R2 SP1 安装SQL Server 2008 R2时提示 "此操作系统不支持此版本的 SQL Server 版本"
    mongodb 备份 指定用户名密码
    c# 线程启动的两种方式与传参
    vs 2015 密钥
    c# 时间格式yyyy-MM-ddTHH:mm:ss
    c# oledb sql 报错 标准表达式中数据类型不匹配
    CentOS下yum安装dnsmasq,并强制替换为最新版
    使用QUOTA(磁盘配额)来限制用户空间
  • 原文地址:https://www.cnblogs.com/Michael2397/p/7670078.html
Copyright © 2011-2022 走看看