首页 > 其他分享 >github PageHelper 分页工具类

github PageHelper 分页工具类

时间:2023-06-12 21:01:07浏览次数:32  
标签:github pageNum 分页 param page import PageHelper PageInfo

分页工具类

import cn.hutool.core.lang.Assert;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.springframework.util.CollectionUtils;

import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;

public class PageHelperUtil {
    
    /**
     * 根据类型T分页对象 生成对应的类型R的分页对象
     * @param sourcePage 源分页对象
     * @param mapper  转换规则
     * @return
     * @param <T>  源数据类型
     * @param <R>  目的数据类型
     */
    public static <T, R> PageInfo<R> convert(PageInfo<T> sourcePage, Function<T, R> mapper) {
        Assert.notNull(sourcePage, "源分页数据不能为空!");
        List<T> sourcePageList = sourcePage.getList();
        List<R> targetPageList;
        if (!CollectionUtils.isEmpty(sourcePageList)) {
            targetPageList = sourcePageList.stream().map(mapper).collect(Collectors.toList());
        } else {
            targetPageList = Collections.emptyList();
        }

        PageInfo<R> targetPage = PageInfo.of(targetPageList);
        targetPage.setPageSize(sourcePage.getPageSize());
        targetPage.setPageNum(sourcePage.getPageNum());
        targetPage.setTotal(sourcePage.getTotal());
        return targetPage;
    }

    /**
     * 获取一个github分页
     *
     * @param iterator   iterator
     * @param pageNum    页数
     * @param pageSize   页大小
     * @param totalCount 总数据量
     * @return 分页信息
     */
    public static <T> PageInfo<T> page(Iterator<T> iterator, int pageNum, int pageSize, long totalCount) {
        PageInfo<T> page = PageInfo.of(Lists.newArrayList(iterator), pageNum);
        page.setPageSize(pageSize);
        page.setPageNum(pageNum);
        page.setTotal(totalCount);
        return page;
    }


    /**
     * 获取一个github分页
     *
     * @param list       返回数据
     * @param pageNum    页数
     * @param pageSize   页大小
     * @param totalCount 总数据量
     * @return 分页信息
     */
    public static <T> PageInfo<T> page(List<T> list, int pageNum, int pageSize, long totalCount) {
        PageInfo<T> page = PageInfo.of(list, pageNum);
        page.setPageSize(pageSize);
        page.setPageNum(pageNum);
        page.setTotal(totalCount);
        return page;
    }
}

 

标签:github,pageNum,分页,param,page,import,PageHelper,PageInfo
From: https://www.cnblogs.com/zhangshiwen/p/17476095.html

相关文章

  • mybatis分页插件示例
    代码示例: 注意Service中的返回值必须要和mapper中的返回值类型的@OverridepublicPageInfo<UserDO>test(ReqQueryDTOreq){PageHelper.startPage(req.getPageNumber(),req.getPageSize());List<UserDO>userDOS=mapper.pageAllSpaces(req);......
  • 文件minio进阶 分页查询
    文章目录前言一、minio使用二、代码1.mino版本是最新的,那么pom中也要最新的2.部分代码总结前言就是现在通过minio管理文件,然后不需要其他信息,所以我也就没有用传统方式,在mysql中做文件记录,直接用minio做了文件存储,以及文件查询;一、minio使用1docker安装最新版minio.开......
  • Redis实现分页和多条件模糊查询方案
    简介: 本文将基于Redis提供条件查询+分页的技术解决方案。 导言Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有模糊条件查询,在面对一些需要分页、排序以及条件查询的场景时(如......
  • 如何使用redis实现高效的分页功能
    如何使用redis实现高效的分页功能一、分页的需求和挑战在很多场景下,我们需要对大量的数据进行分页展示,比如社交网络中的动态、电商平台中的商品列表、博客网站中的文章评论等。分页的目的是为了提高用户体验,让用户可以按照自己的喜好和需求来浏览数据,而不是一次性加载所有的数据......
  • github多账号,如何设置ssh key
    github在使用ssh验证时,会有一个默认的,id_rsa.pub。但是,如果你在一个电脑上,同时需要使用多个github的账号,如何指定不同的key呢这里假定已经创建好了一个不同的ssh-key那就需要显式的告诉git,从哪个位置取ssh的配置具体就是gitconfigcore.sshCommand"ssh-i~/.ssh/id_rsa_example......
  • Vue插件:Vue-resource github搜索示例
     1:安装插件  vue-resourcevue的插件库,在vue1.0年代使用几率很高2:界面效果3:代码信息说明:该示例代码基本上是与《“Vue中通过事件总线方式组件间传递数据及调用Vue脚手架中的axios数据调用方式获取github提供的用户接口数据信息”》一文中的代码相同。        故:此处......
  • Vue 中通过事件总线方式组件间传递数据及调用 Vue脚手架中的axios数据调用方式获取git
    1:看界面效果2:代码结构3:代码内容3.1:引入第三方css样式表:bootstrap.css/*!*Bootstrapv3.3.5(http://getbootstrap.com)*Copyright2011-2015Twitter,Inc.*LicensedunderMIT(https://github.com/twbs/bootstrap/blob/master/LICENSE)*//*!normalize.cssv3.0.3|......
  • Hexo+github搭建个人博客
    所以呢一直想自己搭一个有自己个性域名的博客。。昨晚花了一点时间用Hexo+github搭好了,地址是https://xwj-scarf.github.io/逼格瞬间上了一个档次有没有。。前期工作下载node.js和git,安装hexo在nodejs.org/en/ 上下载安装Node.js,一路下一步就好了下载完成后在cmd输入node-v,就能......
  • 一款能“干掉” ChatGPT 的应用「GitHub 热点速览」
    据说有了它,ChatGPT就可以靠边站了。因为Auto-GPT能更加主动地完成你给他的指定任务,不用做更多的人为干涉,它的推理能力比ChatGPT更强,有人用它解放双手做了个React网站。当然除了升级的Auto-GPT之外,还有DeepSpeed,它能极大地降低训练成本。这两个项目可是本周的明星项目,一个......
  • 使用GithubAction自动构建部署项目
    目录1.1项目准备2.1GithubAction设置3.1运行测试4.1小结GitHubActions是一种持续集成和持续交付(CI/CD)平台,可用于自动执行生成、测试和部署管道。您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。GitHubActions不仅仅是DevOps,还......