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);
}
}
直接在博客上加的注释,会有点难看,将就着吧。重点我都放这了,我觉得我以后还会用到。