需求描述
今天遇到一个需求,做一个排行榜,要求是:用给定的一个时间段中,每个人最好的成绩,进行比较,然后做分页。所以这里就需要再service层自己做分页了。
代码
@Override
public List
<GroupRankingListModel> selectGroupRankingList(Integer pageNo
, Integer pageSize
) {
if(pageSize
<=0)
{
return null
;
}
List
<GroupRankingListModel> returnList
= new ArrayList<>();
pageNo
= pagingCheck(pageNo
, pageSize
, showRankingListLine(returnList
.size()));
returnPersonResult
=returnPersonResult
.stream().
sorted(Comparator
.comparing(GroupRankingListModel
::getResult
)).
skip((pageNo
-1)*pageSize
).
limit(pageSize
).
collect(Collectors
.toList());
return returnPersonResult
;
}
public Integer
pagingCheck(Integer pageNo
,Integer pageSize
,Integer sumCount
)
{
if(pageNo
<=0)
{
return 1;
}
int maxPageCount
;
if (sumCount
%pageSize
== 0)
{
maxPageCount
= sumCount
/ pageSize
;
}
else
{
maxPageCount
= (sumCount
/ pageSize
)+1;
}
if(maxPageCount
<pageNo
)
{
return maxPageCount
;
}
return pageNo
;
}
总结
第一个段代码是核心代码,主要是实现java8的新特性stream流实现分页查询第二个代代码的主要功能是校验页数,这里将页的大小作为了除数,所以也要对页的大小进行判断,防止出现/0的情况。