做项目的过程中,用一条SQL从数据库中查询,是没有办法实现的。只能从程序中来进行处理了。可是这样的话,分页的功能就不行了,就不是真查询了。问了几个同事,他们也没有什么好的办法。所以只能从程序上来进行判断,然后手动的进行分页返回前端去了。
下面是一个小例子,查询出所有符合条件的数据,然后进行分页返回。
思路:
当前页数(pageindex) : 1 2 3 4 5
当前页数数据(users) : 1-10 11-20 21-30 31-40 41-50
合格数据的位置(userlists): 0-9 10-19 20-29 30-39 40-49
if(合格数据总条数 < 当前页数据最大条数 ){
返回给前端的本页数据 = 当前页数第一条 至 合格数据最后一条
}else{
返回给前端的本页数据 = 当前页数第一条 至 当前页数最后一条
}
//全部合格数据
List<SysUserExt> userLists = sysUserMapperExt.getUserPage(param);
//获得当前页数
int pageindex =(Integer)param.get("pageIndex");
//用户总数小于当前页数总数
if(userLists.size()< (pageindex*10)){
// for(int i=(pageindex-1)*10;i<userLists.size();i++){
// users.add(userLists.get(i));
// }
users = userLists.subList((pageindex-1)*10,userLists.size());
}else {
// for (int i = (pageindex - 1) * 10; i <= (pageindex * 10 - 1); i++) {
// users.add(userLists.get(i));
// }
users = userLists.subList((pageindex-1)*10,pageindex * 10);
}
return new GenericPage<>(pageIndex, pageSize, users, userLists.size());
最开始使用的是for循环,但是后来发现了一个方法subList很好用用,不过里面有很多注意的地方List subList使用