旅游网小案例:我的收藏的分页显示

分析

  • 业务流程分析
    在这里插入图片描述
  • 表分析
    在这里插入图片描述
  • 界面分析
    在这里插入图片描述

代码实现

  • Servlet
	/**
     * 收藏线路分页
     * @param request 请求
     * @param response 响应
     * @throws IOException IO异常
     */
    public void myFavoritePageQuery(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //接收参数
        String currentPageStr = request.getParameter("currentPage");
        String pageSizeStr = request.getParameter("pageSize");

        //获取当前用户
        HttpSession session = request.getSession();
        User user = (User) session.getAttribute("user");
        //判空
        int uid;
        if (user != null) {
        	//用户已经登陆
            uid = user.getUid();
        } else {
        	//用户未登陆或恶意访问
            return;
        }
        //处理参数,并设置默认值
        int pageSize = 5;
        if (pageSizeStr != null && pageSizeStr.length() > 0) {
            pageSize = Integer.parseInt(pageSizeStr);
        }

        int currentPage = 1;
        if (currentPageStr != null && currentPageStr.length() > 0) {
            currentPage = Integer.parseInt(currentPageStr);
        }
        //调用service方法
        PageBean<Route> myFavoritePageBean= favoriteService.myFavoritePageQuery(uid,pageSize,currentPage);
        //回写客户端
        writeValue(myFavoritePageBean, response);
    }

进行参数的获取,与用户是否登陆的校验,并设置分页默认值.

  • Service
	@Override
    public PageBean<Route> myFavoritePageQuery(int uid, int pageSize, int currentPage) {
        //创建PageBean
        PageBean<Route> pageBean = new PageBean<>();
        List<Route> routes = null;
        //查询rid集合
        List<Integer> rids = favoriteDao.findRidByUid(uid);
        //查询收藏的route信息集合
        //判空
        if (rids != null && rids.size() > 0) {
            //计算总记录数
            int count = rids.size();
            //注入总记录数
            pageBean.setTotalCount(count);
            //查询数据
            //计算开始索引
            int start = (currentPage - 1) * pageSize;
            routes = new ArrayList<>();
            for (Integer rid : rids) {
            	//根据rid查询线路信息
                Route route = routeDao.findPageByRid(rid,start,pageSize);
                routes.add(route);
            }
            //设置数据
            pageBean.setList(routes);
            //计算总页数
            int totalPage = count % pageSize != 0 ? count / pageSize + 1 : count / pageSize;
            //设置总页码
            pageBean.setTotalPage(totalPage);
            //设置当前页码
            pageBean.setCurrentPage(currentPage);
            //设置显示条数
            pageBean.setPageSize(pageSize);
        }
        return pageBean;
    }

根据用户的id在收藏表中查询出线路信息id的列表,根据线路id查询线路信息,然后添加进PageBean中,进行返回.

  • Dao
	@Override
    public List<Integer> findRidByUid(int uid) {
        String sql = "select rid from tab_favorite where uid= ?";
        return template.queryForList(sql, Integer.class, uid);

    }
	@Override
    public Route findPageByRid(int rid, int start, int pageSize) {
        String sql = "select * from tab_route where rid= ? limit ?,? ";
        return template.queryForObject(sql, new BeanPropertyRowMapper<>(Route.class), rid, start, pageSize);
    }

在根据rid在tab_route查询线路信息.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘿嘿嘿1212

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值