Mybatis分页插件PageHelper的使用

1 POM文件中引入依赖 
<!-- 分页助手 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
2 在配置文件中加入(spring boot项目不需要配置,我这里没有用spring boot的启动类启动)

注意 <plugins> 在mybatis-config.xml文件中的位置,必须要符合 http://mybatis.org/dtd/mybatis-3-config.dtd 中指定的顺序:

<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, 
objectFactory?, objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库-->
<!--<property name="dialect" value="mysql"/>-->
</plugin>
</plugins>

3如果使用默认的PageInfo
PageHelper.startPage(3, 2);
List<CoachClassinfo> list = mapper.selectByCoachid(33);
PageInfo<CoachClassinfo> pageInfo = new PageInfo<>(list);
PageInfo是插件作者给我们自己定义自己的PageBean,提供的一个参考例子
我们可以自定义一个和PageInfo类似的分页结果Bean
import com.github.pagehelper.Page;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author: chenglongyi
 **/
@Data
public class PageBen<T> implements Serializable {
    private static final long serialVersionUID = 8656597559014685635L;
    private long total;        //总记录数
    private List<T> list;    //结果集
    private int pageNum;    // 第几页
    private int pageSize;    // 每页记录数
    private int pages;        // 总页数
    private int size;        // 当前页的数量 <= pageSize,该属性来自ArrayList的size属性

    public PageBen(List<T> list) {
        if (list instanceof Page) {
            Page<T> page = (Page)list;
            this.total = page.getTotal();
            this.list = page.getResult();
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();
            this.pages = page.getPages();
            this.size = page.size();
        }
    }
}

  然后在代码中可以使用:

PageHelper.startPage(3, 2);
List<CoachClassinfo> list = mapper.selectByCoachid(33);
PageBen<CoachClassinfo> pageInfo = new PageBen<>(list);
            

  

使用时可能需要注意的点: PageHelper.startPage(pageNum,pageSize);后面一句必须是基于mapper的查询,否则会不生效。







posted @ 2019-05-06 14:26  looyee  阅读(118)  评论(0编辑  收藏  举报