把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<Record> recordWithFriends = new ArrayList<Record>();
        recordWithFriends = recordService.recordWithFriends(userid);
        PageUtil<Record> pageUtil = new PageUtil<Record>();
        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<Record> qqq= (List<Record>) map.get("recordWithFriends" + pageIndex);
            System.out.println("----------------------------------");
            Iterator<Record> iterator1 = qqq.iterator();
            while (iterator1.hasNext()) {
                String string = iterator1.next().toString();
                System.out.println(string);
            }
        }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值