MyBatis PageHelper分页插件
1 PageHelper作用
官网:https://pagehelper.github.io/
PageHelper是一个Mybatis的分页插件, 负责将已经写好的sql语句, 进行分页加工。官网说法:如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。
优点:无需你自己去封装以及关心sql分页等问题,使用很方便,前端取数据也很方便。
2 导入PageHelper插入依赖
<!--MyBatis的PageHelper插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.3</version>
</dependency>
3 添加分页插件配置
3.1 SqlMapConfig.xml配置
如果是单独的MyBatis框架,需要在SqlMapConfig.xml添加分页插件的配置
<!--
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
-->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--数据库方言-->
<property name="helperDialect" value="mysql"/>
<!--合理化分页-->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
必须注意配置的顺序,顺序出错,会执行报错!
这里PageHelper有一些参数可以设置,具体可以查看官网文档。
3.2 applicationContext.xml
如果是MyBatis与Spring整合,需要修改Spring的applicationContext.xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注意:这里还有其他Spring相关配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
reasonable=true
</value>
</property>
</bean>
</array>
</property>
</bean>
4 编写Dao方法
package com.yiidian.dao;
import com.yiidian.domain.Customer;
import java.util.List;
/**
* Dao接口
*一点教程网 - www.yiidian.com
*/
public interface CustomerDao {
/**
* 查询所有用户
*/
public List<Customer> findAll();
}
这里只需要定义普通查询的方法即可,无需为分页另外定义特殊的方法。
5 编写测试类
package com.yiidian.mybatis;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yiidian.dao.CustomerDao;
import com.yiidian.domain.Customer;
import com.yiidian.utils.MyBatisUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* MyBatis测试类 - PageHelper分页插件的使用
* 一点教程网 - www.yiidian.com
*/
public class TestCustomerDao {
@Test
public void test1(){
//1.获取SqlSession对象
SqlSession sqlSession = MyBatisUtils.getSession();
//2.生成Dao代理对象
CustomerDao customerDao = sqlSession.getMapper(CustomerDao.class);
//3.设置分页参数
int pageNun = 1; // 页码
int pageSize = 2;// 每页显示条数
PageHelper.startPage(pageNun,pageSize);
//4. 查询用户数据
List<Customer> list = customerDao.findAll();
//5.把用户数据封装到PageInfo分页结果对象
PageInfo<Customer> page = new PageInfo<>(list);
//6.取出PageInfo的属性
//测试PageInfo全部属性
//PageInfo包含了非常全面的分页属性
System.out.println("当前页码="+page.getPageNum());
System.out.println("每页显示条数="+page.getPageSize());
System.out.println("当前页起始行号="+page.getStartRow());
System.out.println("当前页结束行号="+page.getEndRow());
System.out.println("总记录数="+page.getTotal());
System.out.println("总页数="+page.getPages());
System.out.println("是否为第1页="+page.isIsFirstPage());
System.out.println("是否为最后1页="+page.isIsLastPage());
System.out.println("是否有上一页="+page.isHasPreviousPage());
System.out.println("是否有下一页="+page.isHasNextPage());
System.out.println("当前页数据=");
for(Customer c:page.getList()){
System.out.println(c);
}
//7.关闭连接
sqlSession.close();
}
}
6 运行测试类,查看结果
PageHelper把所有分页结果数据封装到PageInfo对象,下面是打印出常用的属性
源码下载:https://pan.baidu.com/s/1_B6DfcpXPiRxBiVuxxlRPQ
欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。
如果您对我的系列教程感兴趣,也可以关注我的网站:yiidian.com