PageHelper使用
一、PageHelper是什么
pageHelper是Mybatis框架中一个支持分页的插件,让我们的分页操作变得非常简单;它通过mybatis当中的拦截器,拦截查询请求,插入limit分页语句,最后完成分页操作。
二、pageHelper的执行原理
- 在调用Dao的service当中设置分页参数(页码,条数),存入ThreadLocal当中,在Mybatis执行查询Sql前面拦截,从ThreadLocal当中取出分页参数,修改当前执行的语句,添加分页的语句,最后执行添加分页后的Sql语句,实现分页查询。
三、pageHelper的使用
1. 添加pom
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
2. 在Spring与Mybatis整合SqlSessionfactoryBean对象当中添加分页插件。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds"/>
<property name="typeAliasesPackage" value="com.atjianyi.pojo"/>
<!-- 加入插件 -->
<property name="plugins">
<set>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<!--什么数据库-->
<prop key="helperDialect">mysql</prop>
<!--可以防止码数不会溢出-->
<prop key="reasonable">true</prop>
</props>
</property>
</bean>
</set>
</property>
</bean>
3. 在调用dao层之前调用分页方法
@Override
public List<Orders> findAllOrdersByPage(int curPage,int size) throws Exception {
//调用分页方法
PageHelper.startPage(curPage,size);
List<Orders> allOrders = mapper.findAllOrders();
return allOrders;
}
3. 使用pageInfo对象封装
PageInfo<Orders> pageInfo = new PageInfo<>(allOrders);
3. pageInfo封装的数据当中的数据
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;
四、小结
这里只是记录了一下PageHelper的简单使用!当然这里面还有一些缺点,和强大之处,我们后续使用再说