zoukankan      html  css  js  c++  java
  • 我的订单

    在点击我的订单会跳转到一个servlet,但是订单中也会涉及到分页的技术,传递过来的参数只需要一个当前页currPage=1,

    下面是页面跳转后的servlet

    //从request域和session域中拿出currPage和user对象
    Integer currPage = Integer.parseInt(request.getParameter("currPage"));
    User u = (User) request.getSession().getAttribute("existUser");
    //直接调用业务层
    OrderService os = new OrderServiceImpl();
    //因为user的uid和数据库中的orders的uid关联,所以把参数列表只需要传currPage和uid
    PageBean<Order> pageBean = os.findByUid(currPage,u.getUid());
    //然后将查询的结果保存到域对象然后转发
    request.setAttribute("pageBean", pageBean);
    request.getRequestDispatcher("/jsp/order.jsp").forward(request, response);

    在业务层的实现类中封装pageBean的数据

    //首先创建pageBean对象
    PageBean<Order> pageBean = new PageBean<>();
    //封装每页显示的记录数
    Integer pageSize = 5;
    pageBean.setPageSize(pageSize);
    //封装当前页数
    pageBean.setCurrPage(currPage);
    //获得总记录数
    //总记录数就是通过用户的uid去orders的表中去查找出总的订单项
    OrderDao od = new OrderDaoImpl();
    Integer count = od.findCountByUid(uid);
    pageBean.setTotalCount(count);
    //获得总页数
    //总页数就是总 记录数除以每页显示的记录数然后向上取整
    double tx = count;
    Double tp = Math.ceil(tx / pageSize);
    Integer totalPage = tp.intValue();
    pageBean.setTotalPage(totalPage);
    //获得list封装的订单项详细信息和订单项中的商品详细信息
    int begin = (currPage-1) * pageSize;
    List<Order> list = od.findPageByUid(begin,pageSize,uid);
    //封装然后返回
    pageBean.setList(list);
    return pageBean;

    在dao层的实现类中查询需要的总记录数
    并将商品的信息和订单项的信息封装的订单中由list带着订单返回
    首先返回查询的总记录数,这个很简单

    QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());String sql = "select count(*) from orders where uid = ?";Object [] params = {uid};
    QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
    String sql = "select count(*) from orders where uid = ?";
    Object [] params = {uid};
    Long count = (Long) qr.query(sql, new ScalarHandler(), params);
    return count.intValue();


    下面是返回封装了订单项商品信息的List<order>

    //首先查询出在当前页面下的所有的order信息,但是这个order中没有具体的订单项信息
    QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
    String sql = "select * from orders where uid = ? order by ordertime desc limit ?,?";
    Object [] params = {uid,begin,pageSize};
    List<Order> list = qr.query(sql, new BeanListHandler<Order>(Order.class), params);
    //遍历order将订单项和商品的详细信息封装到一个map集合
    for (Order order : list) {
        sql = "select * from orderitem o,product p where o.pid=p.pid and o.oid=?";
        List<Map<String, Object>> oList = qr.query(sql, new MapListHandler(), order.getOid());
        for (Map<String, Object> map : oList) {
            //封装查询出来的数据到product和orderitem表中
            Product p = new Product();
            BeanUtils.populate(p, map);
            OrderItem o = new OrderItem();
            BeanUtils.populate(o, map);
            o.setProduct(p);
            order.getOrderItems().add(o);
        }
    }
    return list;
  • 相关阅读:
    经典问题的非经典解法
    经典问题之树的深度
    35、AndroidView的滑动方式
    30、Android属性动画
    31、Android矢量动画
    36、AndroidCanvas画布
    27、AndroidEventBus
    28、AndroidRxjava
    32、Android事件分发机制
    29、Android基本动画
  • 原文地址:https://www.cnblogs.com/learnjfm/p/7017169.html
Copyright © 2011-2022 走看看