十、MyBatis分页插件
1.分页插件实现的步骤
①在pom.xml添加依赖
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.2.0</version>
</dependency>
②配置分页插件 mybatis-config.xml
在MyBatis的核心配置文件配置插件,在typeAliases和environments之间
<plugins><!--设置分页插件--><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
2.分页插件的使用
开启分页功能
- 在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
pageNum:当前页的页码,从1开始
pageSize:每页的显示数量
方法一:直接输出
①在CacheMapper接口里
public interface CacheMapper {/*** 查询所有员工信息*/List<Emp> getAllEmp();
}
②在CacheMappe.xml映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.mapper.CacheMapper"><select id="getAllEmp" resultType="com.atguigu.mybatis.pojo.Emp">select * from t_emp</select>
</mapper>
③测试, Page<Object> page = PageHelper.startPage(1, 4);获取第一页的前4条数据
public class test {@Testpublic void t1() throws IOException {SqlSession sqlSession = SqlSessionUtils.getSqlSession();CacheMapper mapper = sqlSession.getMapper(CacheMapper.class);Page<Object> page = PageHelper.startPage(1, 4);List<Emp> allEmp = mapper.getAllEmp();System.out.println(page);for (Emp emp:allEmp) {System.out.println(emp);}}
}
方法二:使用PageInfo
在查询获取list集合之后,使用PageInfo<T> pageInfo = new PageInfo<>(List<T> list, int navigatePages)获取分页相关数据
- List分页之后的数据
- navigatePages:导航分页的页码数
@Test
public void t1() throws IOException {SqlSession sqlSession = SqlSessionUtils.getSqlSession();CacheMapper mapper = sqlSession.getMapper(CacheMapper.class);PageHelper.startPage(1, 4);List<Emp> allEmp = mapper.getAllEmp();PageInfo<Emp> page = new PageInfo<>(allEmp,3);System.out.println(page);
}
- 常用属性
-
pageNum:当前页的页码
pageSize:每页显示的条数
size:当前页显示的真实条数
total:总记录数
pages:总页数
prePage:上一页的页码
nextPage:下一页的页码
isFirstPage/isLastPage:是否为第一页/最后一页
hasPreviousPage/hasNextPage:是否存在上一页/下一页
navigatePages:导航分页的页码数
navigatepageNums:导航分页的页码