13、分页插件
SQL语句中添加
limit index,pageSize
pageSize: 每页显示的条数
pageNum: 当前页的页码
index: 当前页的起始索引, index = (pageNum + 1) * pageSize
count: 总记录数
totalPage: 总页数
totalPage=count/pageSize;
if(count % pageSize !=0 ){
totalPage += 1;
}
pageSize=4, pageNum=1, index=0 limit 0,4
pageSize=4, pageNum=3, index=8 limit 8,4
pageSize=4, pageNum=6, index=20 limit 8,4
13.1、分页插件的使用步骤
13.1.1、添加依赖
pom.xml中添加pagehelper分页插件所需的依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
13.1.2、配置分页插件
在MyBatis的核心配置文件中配置插件
<plugins>
<!-- 设置分页插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
测试
@Test
public void testPage(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
//查询功能之前开启分页功能
PageHelper.startPage(1,4);//pageNum:1 当前页是第1页,每页4条
List<Emp> list = mapper.selectByExample(null);
list.forEach(System.out::println);
}
默认访问第一页,每页4条。sql语句中是 limit 0,4,可简写为limit 4
13.2、分页插件的使用
① 在查询功能之前使用 PageHelper.startPage(int pageNum, int pageSize)开启分页功能
pageNum: 当前页的页码
pageSize: 每页显示的条数
② 在查询获取list集合之后,使用PageInfo pageInfo = new PageInfo<>(List list,int navigatePages) 获取分页相关数据
list: 分页之后的数据
navigatePages: 导航分页的页码数
③ 分页相关数据
PageInfo{
pageNum=8, pageSize=4, size=2, startRow=29, endRow=30, total=30, pages=8,
list=Page{count=true, pageNum=8, pageSize=4, startRow=28, endRow=32, total=30,
pages=8, reasonable=false, pageSizeZero=false},
prePage=7, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true,
hasNextPage=false, navigatePages=5, navigateFirstPage4, navigateLastPage8,
navigatepageNums=[4, 5, 6, 7, 8]
}
pageNum: 当前页的页码
pageSize: 每页显示的条数
size: 当前页显示的真实条数
total: 总记录数
pages: 总页数
prePage: 上一页的页码
nextPage: 下一页的页码
isFirstPage/isLastPage: 是否为第一页/最后一页
hasPreviousPage/hasNextPage: 是否存在上一页/下一页
navigatePages: 导航分页的页码数
navigatepageNums: 导航分页的页码,[1,2,3,4,5]
测试代码:
package com.fan.mybatis.test;
import com.fan.mybatis.mapper.EmpMapper;
import com.fan.mybatis.pojo.Emp;
import com.fan.mybatis.utils.SqlSessionUtils;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
/**
* @Date: 2023/03/10
* @Author: fan
* @Description:
*/
public class PageTest {
@Test
public void testPage(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
//查询功能之前开启分页功能
Page<Object> page = PageHelper.startPage(1, 4);//pageNum:1 当前页是第1页,每页4条
List<Emp> list = mapper.selectByExample(null);
list.forEach(System.out::println);
//查询功能之后可以获取分页相关的所有数据
PageInfo<Emp> pageInfo = new PageInfo<>(list,5);
list.forEach(System.out::println);
System.out.println(pageInfo);
}
}