把list每次截取一定数量实现分页

ssm项目,原本要实现的是多表带条件查询并且将其结果排序后分页,but,如果只查询多表带条件查询并且将其结果排序的结果是对的,数据没少一个不差,但是加上limit分页之后,数据缺失,还重复,昨天百度一下午,但是这种问题太少了,我也按照网上的把limit放入子查询里还是一样,所以放弃了这种从数据库分页。现在要讲的是,多表带条件查询并且将其结果排序的结果存入list,然后实现list截取分页。

是参考了这位大佬https://www.cnblogs.com/wkrbky/p/6100984.html的文章,试了成功,记一下,以后数据库不行那就换这张方法。

 public void recordWithFriends(HttpSession session, HttpServletRequest request) {
        int pageIndex = 1;
        if (request.getParameter("pageIndex1") != null)
            pageIndex = Integer.parseInt(request.getParameter("pageIndex1"));
        Integer userid = (Integer) session.getAttribute("userid");
        //根据用户id取出数据,10表示pagesize=10,每页10条数据,
        List recordWithFriends = new ArrayList();
        recordWithFriends = recordService.recordWithFriends(userid);
        PageUtil pageUtil = new PageUtil();
        pageUtil.setList(recordWithFriends);
        //pagenumber表示共多少条数据
        Integer pageNumber = recordWithFriends.size();
        System.out.println(pageNumber);
        //pagecount表示多少页
        int pageCount;
        if (pageNumber % 10 == 0) {
            pageCount = pageNumber / 10;
        } else {
            pageCount = (pageNumber / 10) + 1;
        }
        System.out.println(pageCount);
        pageUtil.setPageCount(pageCount);
        pageUtil.setPageNumber(pageNumber);
        pageUtil.setPageIndex(pageIndex);
        request.setAttribute("pageUtil1", pageUtil);
        int toIndex = 10;//toindex就是表示每次取十条
        Map map = new HashMap();     //用map存起来新的分组后数据
        int keyToken = 1;//这里我写1的原因是要跟pageIndex相同
        for (int i = 0; i < pageNumber; i += 10) {
            if (i + 10 > pageNumber) {        //作用为toIndex最后没有10条数据则剩余几条newList中就装几条
                toIndex = pageNumber - i;
            }
            List newList = recordWithFriends.subList(i, i + toIndex);
            map.put("recordWithFriends" + keyToken, newList);
            keyToken++;
        }
//map.get("recordWithFriends" + pageIndex)里面的pageIndex其实就是keyToken,根据我从前端获得到的pageIndex,就是第几页,获取到第几页我就存第几页的数据到session,然后前端读取。

        session.setAttribute("list2",map.get("recordWithFriends" + pageIndex));
//以下就是我要打印第几页的数据,测试是否正确
        List qqq= (List) map.get("recordWithFriends" + pageIndex);
            System.out.println("----------------------------------");
            Iterator iterator1 = qqq.iterator();
            while (iterator1.hasNext()) {
                String string = iterator1.next().toString();
                System.out.println(string);
            }
        }

直接在博客上加的注释,会有点难看,将就着吧。重点我都放这了,我觉得我以后还会用到。

你可能感兴趣的:(记录小技术)