PageHelper分页插件
PageHelper是适用于MyBatis框架的一个分页插件,使用方式极为便捷,支持任何复杂的单表、多表分页查询操作。
开发步骤:
1,导入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
2,配置MyBatis.config.xml文件:为了拦截,加分页属性
<configuration>
<typeAliases></typeAliases>
<plugins>
<!-- 加拦截com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
<environments>...</environments>
</configuration>
3,写sql语句
<select id="selectUsers" resultType="user">
select * from t_users
</select>
4,写测试类
@Test
public void test2() {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
//分页查询的测试select * from t_users LIMIT ?, ?
PageHelper.startPage(2,3);
List<User> users = mapper.selectUsers();
System.out.println(users.toString());
}
PageInfo对象
PageInfo对象中包含了分页操作中的所有相关数据
使用PageInfo保存分页查询结果
@Test
public void testPageInfo(){
UserDao userDao = MyBatisUtils.getMapper(UserDao.class);
PageHelper.startPage(6, 2);
List<User> users = userDao.selectAllUsers();
PageInfo<User> pageInfo = new PageInfo<User>(users);//将分页查询的结果集保存在PageInfo对象中
System.out.println(pageInfo);
}
结果:
PageInfo{pageNum=2, pageSize=3, size=3, startRow=4, endRow=6, total=6, pages=2, list=Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=6, pages=2, reasonable=false, pageSizeZero=false}
[User{id=4, name=‘张三11’, password=‘123456’, sex=‘女’, birthday=null, registTime=null, pid=null, passport=null, addresses=null, roles=null}, User{id=5, name=‘张三11’, password=‘123456’, sex=‘女’, birthday=null, registTime=null, pid=null, passport=null, addresses=null, roles=null}, User{id=6, name=‘张三11’, password=‘123456’, sex=‘女’, birthday=null, registTime=null, pid=null, passport=null, addresses=null, roles=null}],
prePage=1, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true, hasNextPage=false, navigatePages=8, navigateFirstPage=1, navigateLastPage=2, navigatepageNums=[1, 2]}
思考:可以根据pageinfo的属性进行判断是否是最后一页等,利用拿到的值进行相应的逻辑判断处理。