1.简介
PageHelper 是国内非常优秀的一款开源的 mybatis 分页插件,它支持基本主流与常用的数据库,例如 mysql、oracle、mariaDB、DB2、SQLite、Hsqldb 等。需要注意的是,该插件是mybatis的插件,无法使用到其他的持久层框架上。下面附上官网地址
网址:https://pagehelper.github.io/
2.使用步骤
2.1 导入依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>1.2.3</version> </dependency>
2.2 在mybatis的配置文件中添加配置
<!--sqlSessionFactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="typeAliasesPackage" value="cn.test.domain"/> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <!--使用下面的方式配置参数,一行配置一个 --> <value> params=mysql </value> </property> </bean> </array> </property> </bean>
解析:
其中红色部分为pagehelp插件的配置,蓝色方框部分根据你的数据库的类型进行配置,我这里使用了mysql。所以配置了params=mysql
2.3 在代码中使用
使用PageHelper.startPage
静态方法调用
// PageInfo等同于我们自定义的pageBean 并且比pageBean更完善 public PageInfo<User> findByPage(Integer page, Integer pageSize) { PageHelper.startPage(page,pageSize); //使用分页插件 一定要紧跟一个查询方法 List<User> list = userDao.findAll(); //表面上是查询所有,但是执行时已经分页了 return new PageInfo<Company>(list,5); }
解析
2.4 PageInfo对象介绍
使用该插件返回的是PageInfo对象,下面我们对其中的属性进行分析:
public class PageInfo<T> implements Serializable { private static final long serialVersionUID = 1L; //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int size; //由于startRow和endRow不常用,这里说个具体的用法 //可以在页面中"显示startRow到endRow 共size条数据" //当前页面第一个元素在数据库中的行号 private int startRow; //当前页面最后一个元素在数据库中的行号 private int endRow; //总记录数 private long total; //总页数 private int pages; //结果集 private List<T> 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; }
来源:https://www.cnblogs.com/changchangchang/p/12021895.html