1、搭建步骤
a>添加pom依赖
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
b>配置分页插件
在MyBatis的核心配置文件中配置插件,位于<typeAliases>
和<environments>
之间
<plugins>
<!--设置分页插件-->
<plugin interceptor="com.github.pagehelper.PageInterceptor" />
</plugins>
2、分页插件的使用
a>在查询功能之前开启分页
@Test
public void testPageHelper() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
// 开启分页查询,第一个参数为当前页,第二个参数为每页显示的条数
PageHelper.startPage(1, 3);
List<Emp> emps = mapper.selectByExample(null);
emps.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
PageHelper.startPage()默认从升序取,若从降序取,则添加第三个参数:
PageHelper.startPage(1, 3,"eid desc");
此处查询出数据库表中前3条记录
PageHelper.startPage()是有返回值的,若直接输出其返回值
@Test
public void testPageHelper() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
// 开启分页查询,第一个参数为当前页,第二个参数为每页显示的条数
Page<Object> page = PageHelper.startPage(1, 3, "eid asc");
List<Emp> emps = mapper.selectByExample(null);
//emps.forEach(System.out::println);
System.out.println(page);
} catch (IOException e) {
e.printStackTrace();
}
}
输出结果:
Page{
count=true, pageNum=1, pageSize=3, startRow=0, endRow=3, total=10, pages=4, reasonable=false, pageSizeZero=false}[
Emp(eid=1, empName=路飞, age=33, sex=男, email=1000@qq.com, did=1),
Emp(eid=2, empName=赵云, age=35, sex=男, email=101@126.com, did=2),
Emp(eid=3, empName=貂蝉, age=30, sex=女, email=102@168.com, did=3)
]
b>在查询获取list集合之后,获取分页相关数据
@Test
public void testPageHelper() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
// 开启分页查询,第一个参数为当前页,第二个参数为每页显示的条数
// Page<Object> page = PageHelper.startPage(1, 3, "eid asc");
PageHelper.startPage(1, 3, "eid asc");
List<Emp> emps = mapper.selectByExample(null);
// 第一个参数为分页之后的数据,第二个参数为导航分页的页码数
PageInfo<Emp> page = new PageInfo<>(emps, 3);
//emps.forEach(System.out::println);
System.out.println(page);
} catch (IOException e) {
e.printStackTrace();
}
}
输出结果:
PageInfo{
pageNum=1, pageSize=3, size=3, startRow=1, endRow=3, total=10, pages=4,
list=Page{
count=true, pageNum=1, pageSize=3, startRow=0, endRow=3, total=10, pages=4, reasonable=false, pageSizeZero=false}[
Emp(eid=1, empName=路飞, age=33, sex=男, email=1000@qq.com, did=1),
Emp(eid=2, empName=赵云, age=35, sex=男, email=101@126.com, did=2),
Emp(eid=3, empName=貂蝉, age=30, sex=女, email=102@168.com, did=3)],
prePage=0, nextPage=2, isFirstPage=true, isLastPage=false, hasPreviousPage=false, hasNextPage=true, navigatePages=3, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]}
数据 | 说明 |
---|---|
pageNum | 当前页的页码 |
pageSize | 每页显示的条数 |
size | 每页显示的条数 |
startRow | 从第几行开始 |
endRow | 从第几行结束 |
total | 总条数 |
pages | 总页数 |
prePage | 上一页 |
nextPage | 下一页 |
isFirstPage | 是否是第一页 |
isLastPage | 是否是最后一页 |
hasPreviousPage | 是否有上一页 |
hasNextPage | 是否有下一页 |
navigatePages | 导航分页的页码数 |
navigateFirstPage | 导航分页从第几页开始 |
navigateLastPage | 导航分页到第几页结束 |
navigatepageNums | 导航分页的页码 |