初识PageHelper

初识PageHelper

PageHelper是一款强大的开源免费的Mybatis第三方分页插件,其工作原理是利用mybatis拦截器,在查询数据库的时候拦截下sql,并修改sql使其实现分页效果。

一、配置PageHelper

1、引入依赖

<!--pagehelper-->
<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>5.0.0</version>
</dependency>

<!-- pagehelper的依赖包:jsqlparser -->
<dependency>
  <groupId>com.github.jsqlparser</groupId>
  <artifactId>jsqlparser</artifactId>
  <version>0.9.5</version>
</dependency>

2、配置插件(二选一)
在mybatis-config.xml中使用

<! --
     在配置文件中, 插件位置必须满足以下顺序的要求:
    typeAliases?,typeHandlers?,objectFactory ?, objectWrapperFactory ?,  plugins ?, environment?, databaseIdProvider?,mappers?
-- > 
<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <!-- 配置参数-- > 
        <!-- 数据库方言 -->
    <property name="dialect" value="MySQL"/>
    <!-- 设置为true时,使用RowBounds分页会进行count查询 会去查询出总数 -->
    <property name="rowBoundsWithCount" value="true"/>
    。。。
    <property name="参数n" value="值n"/>
    </plugin>
</plugins>

在Spring application.xml中使用

<!-- pageHelper 分页插件 -->
<property name="plugins">
  <array>
   <bean class="com.github.pagehelper.PageHelper">
    <property name="properties">
     <value>
          dialect=mysql
         rowBoundsWithCount=true
        。。。
        参数n =值n
     </value>
    </property>
   </bean>
  </array>
</property>

3、至此配置就完成了,一起来看看怎样使用吧!!!

二、使用PageHelper

service层代码如下

public PageInfo findPage(int page,int pageSize){
  PageHelper.startPage(page,pageSize);
  List List=userDao.findAll();
  PageInfo pageInfo = new PageInfo(list);
  return pageInfo;
 }

注:此时返回的对象就是pageInfo对象,里面包含很多属性一起来看下吧

public class PageInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    //当前页码
    private int pageNum;

    //每页的数量
    private int pageSize;

    //当前页的数量
    private int size;

    //当前页面第一个元素在数据库中的行号
    private int startRow;

    //当前页面最后一个元素在数据库中的行号
    private int endRow;

    //总记录数
    private long total;

    //总页数
    private int pages;

    //结果集
    private List list;

    //前一页
    private int prePage;

    //下一页
    private int nextPage;

    //是否为第一页
    private boolean isFirstPage = false;

    //是否为最后一页
    private boolean isLastPage = false;

    //是否有前一页
    private boolean hasPreviousPage = false;

    //是否有下一页
    private boolean hasNextPage = false;

    //导航页码数
    private int navigatePages;

    //所有导航页号
    private int[] navigatepageNums;

    //导航条上的第一页
    private int navigateFirstPage;

    //导航条上的最后一页
    private int navigateLastPage;
}

结束语:看完此片文章你就可以操练起来了哟


   转载规则


《初识PageHelper》 康怀安 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录