• (二十二)查询订单的详情


    案例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;
        }

  • 相关阅读:
    android SQLite使用
    蓝牙从搜索到成功配对的全过程
    vscode 开发.net core 从安装到部署 教程详解
    ServiceStack 简单服务搭建
    MongoDB 安装配置
    request.url 端口 错误
    Python 之 hello world
    .NET DateTime 源码学习
    Parallel.For 平行算法 使用
    Thread.Join 和 Task.Wait 方法
  • 原文地址:https://www.cnblogs.com/Michael2397/p/7670078.html
Copyright © 2020-2023  润新知