我是靠谱客的博主 秀丽背包,最近开发中收集的这篇文章主要介绍前端用layui分页后台做处理时进行手动配置pageInfo参数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

做项目时遇到的需求,需要对多条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参数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部