分页插件pagehelper初使用,前端传递当前页码与每页条数后台接受实现分页

最新的项目用到了pagehelper分页插件,在此做下笔记方便以后查看!同时也希望能对别人产生帮助。

1.因为项目是maven进行管理的,所以:第一步就是在pom.xml文件中引入pagehelper分页插件。

<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper-spring-boot-starter</artifactId>
   <version>1.2.3</version>
</dependency>

2.项目运行成功 ,调用数据库数据前加一句代码即可实现分页 :PageHelper.startPage(pageNum, pageSize)
分页成功后,实际返回的结果list类型是Page<E>,如果想取出分页信息,有两种方法:

需要强制转换为Page<E>,或者使用PageInfo类(下面的例子有介绍)

方法一:强转

serviceImpl层

controller层

Page<E>:需要详细了解可以查下每个属性的含义。

方法二:使用PageInfo类

public PageInfo<Doc> selectDocByPage1(int currentPage, int pageSize) {
        PageHelper.startPage(currentPage, pageSize);
        List<Doc> docs = docMapper.selectByPageAndSelections();
        PageInfo<Doc> pageInfo = new PageInfo<>(docs);
        return pageInfo;
    }

pageInfo:需要详细了解可以查下每个属性的含义。 

/**
     * 页码,从1开始
     */
    private int pageNum;
    /**
     * 页面大小
     */
    private int pageSize;
    /**
     * 起始行
     */
    private int startRow;
    /**
     * 末行
     */
    private int endRow;
    /**
     * 总数
     */
    private long total;
    /**
     * 总页数
     */
    private int pages;
    /**
     * 包含count查询
     */
    private boolean count = true;
    /**
     * count信号,3种情况,null的时候执行默认BoundSql,true的时候执行count,false执行分页
     */
    private Boolean countSignal;
    /**
     * 排序
     */
    private String orderBy;
    /**
     * 只增加排序
     */
    private boolean orderByOnly;
    /**
     * 分页合理化
     */
    private Boolean reasonable;
    /**
     * 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
     */
    private Boolean pageSizeZero;

注意:PageHelper只对紧跟着的第一个SQL语句起作用

    //获取第1页,10条内容,默认查询总数count
    PageHelper.startPage(1, 10);

    //紧跟着的第一个select方法会被分页
    List<Country> list = countryMapper.selectIf(1);

    //后面的不会被分页,除非再次调用PageHelper.startPage
    List<Country> list2 = countryMapper.selectIf(null);
    //list1
    assertEquals(2, list.get(0).getId());
    assertEquals(10, list.size());
    //分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>,
    //或者使用PageInfo类(下面的例子有介绍)
    assertEquals(182, ((Page) list).getTotal());
    //list2
    assertEquals(1, list2.get(0).getId());
    assertEquals(182, list2.size());

如果想知道为什么会这样可以搜搜pageHelper实现分页的原理。

猜你喜欢

转载自blog.csdn.net/zf18234031156/article/details/81460715
今日推荐