概述
做项目时遇到的需求,需要对多条select进行分页处理。
将所有的查询结果list放到一起,通过对pageInfo参数的手动配置实现多查询分页
(ps:pageHelper分页只针对就近一条sql查询有效,多个查询的聚合就需要手动了)
话不多说,上代码
public PageDataResult getFollowUpList(Integer pageNum, Integer pageSize, String pid) {
PageDataResult pageDataResult = new PageDataResult();
// 获取用户信息
Subject subject = SecurityUtils.getSubject();
BaseAdminUser user = (BaseAdminUser) subject.getPrincipal();
List<String> groupIds = Arrays.asList(user.getGroupPath().split(","));
List<ReactiveProteinDTO> hyList = reactiveProteinMapper.getHyList(groupIds,pid);
List<ReactiveProteinDTO> diaList = reactiveProteinMapper.getDiaList(groupIds,pid);
List<ReactiveProteinDTO> btList = reactiveProteinMapper.getBtList(groupIds,pid);
List<ReactiveProteinDTO> psyList = reactiveProteinMapper.getPsyList(groupIds,pid);
List<ReactiveProteinDTO> list = new ArrayList<>();
if (hyList.size() != 0) {
list.addAll(hyList);
}
if (diaList.size() != 0) {
list.addAll(diaList);
}
if (btList.size() != 0) {
list.addAll(btList);
}
if (psyList.size() != 0) {
list.addAll(psyList);
}
if (list.size() != 0) {
PageInfo<ReactiveProteinDTO> pageInfo = new PageInfo<>(list);
PageInfoUtils.PageInfoUtils(pageNum,pageSize,pageInfo);
// System.out.println(pageInfo);
// int start = 0;
// int end = 0;
// int totalPages = 0;
// int totalRecord = list.size();
// pageInfo.setPageNum(pageNum);
// pageInfo.setPageSize(pageSize);
// pageInfo.setSize(totalRecord);
// if(totalRecord%pageSize==0){
// totalPages = totalRecord / pageSize;
// }else {
// totalPages = totalRecord / pageSize + 1;
// }
// //初始边界值计算
// if (pageNum == 1){
// start = 0;
// pageInfo.setHasPreviousPage(false);
// pageInfo.setPrePage(0);
// pageInfo.setIsFirstPage(true);
// }else {
// start = pageInfo.getPageSize()*(pageInfo.getPageNum()-1);
// pageInfo.setHasPreviousPage(true);
// pageInfo.setPrePage(pageNum-1);
// pageInfo.setIsFirstPage(false);
// }
// pageInfo.setStartRow((pageNum-1)*pageSize);
// //结束边界值计算
// if ((start+pageInfo.getPageSize() > pageInfo.getTotal())){
// end = list.size();
// pageInfo.setHasNextPage(false);
// pageInfo.setIsLastPage(true);
// pageInfo.setEndRow(list.size());
// }else {
// end = start + pageInfo.getPageSize();
// pageInfo.setHasNextPage(true);
// pageInfo.setNextPage(pageNum + 1);
// pageInfo.setIsLastPage(false);
// pageInfo.setEndRow((pageNum)*pageSize);
// }
// if (start < end && end <= list.size()){
// pageInfo.setList(list.subList(start,end));
// }
// if(pageInfo.getSize() == 0) {
// pageInfo.setStartRow(0);
// pageInfo.setEndRow(0);
// } else {
// pageInfo.setStartRow(pageInfo.getStartRow() + 1);
// pageInfo.setEndRow(pageInfo.getStartRow()-1+pageInfo.getSize());
// }
// pageInfo.setPages(totalPages);
// pageInfo.setNavigateLastPage(totalPages>pageNum?pageNum+1:totalPages);
pageDataResult.setList(pageInfo.getList());
pageDataResult.setTotals((int) pageInfo.getTotal());
}
return pageDataResult;
}
对此写了个封装类如下
import com.github.pagehelper.PageInfo;
/**
* 使用PageInfo做分页时手动设置参数的工具类
* pageNum 页码
* pageSize 每页包含的数据量
* PageInfo 对象
* @Author nana
* @Date 2021/6/8 16:31
*/
public class PageInfoUtils {
public static PageInfo PageInfoUtils(Integer pageNum, Integer pageSize, PageInfo pageInfo){
int start = 0;
int end = 0;
int totalPages = 0;
int totalRecord = (int) pageInfo.getTotal();
pageInfo.setPageNum(pageNum);
pageInfo.setPageSize(pageSize);
pageInfo.setSize(totalRecord);
if(totalRecord%pageSize==0){
totalPages = totalRecord / pageSize;
}else {
totalPages = totalRecord / pageSize + 1;
}
//初始边界值计算
if (pageNum == 1){
start = 0;
pageInfo.setHasPreviousPage(false);
pageInfo.setPrePage(0);
pageInfo.setIsFirstPage(true);
}else {
start = pageInfo.getPageSize()*(pageInfo.getPageNum()-1);
pageInfo.setHasPreviousPage(true);
pageInfo.setPrePage(pageNum-1);
pageInfo.setIsFirstPage(false);
}
pageInfo.setStartRow((pageNum-1)*pageSize);
//结束边界值计算
if ((start+pageInfo.getPageSize() > pageInfo.getTotal())){
end = totalRecord;
pageInfo.setHasNextPage(false);
pageInfo.setIsLastPage(true);
pageInfo.setEndRow(totalRecord);
}else {
end = start + pageInfo.getPageSize();
pageInfo.setHasNextPage(true);
pageInfo.setNextPage(pageNum + 1);
pageInfo.setIsLastPage(false);
pageInfo.setEndRow((pageNum)*pageSize);
}
if (start < end && end <= totalRecord){
pageInfo.setList(pageInfo.getList().subList(start,end));
}
if(pageInfo.getSize() == 0) {
pageInfo.setStartRow(0);
pageInfo.setEndRow(0);
} else {
pageInfo.setStartRow(pageInfo.getStartRow() + 1);
pageInfo.setEndRow(pageInfo.getStartRow()-1+pageInfo.getSize());
}
pageInfo.setPages(totalPages);
pageInfo.setNavigateLastPage(totalPages>pageNum?pageNum+1:totalPages);
return pageInfo;
}
}
最后
以上就是秀丽背包为你收集整理的前端用layui分页后台做处理时进行手动配置pageInfo参数的全部内容,希望文章能够帮你解决前端用layui分页后台做处理时进行手动配置pageInfo参数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复