MyBatis之分页插件

234 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情

分页插件

limit index pageSize

index:当前页的起始索引 index=(pageNum-1)*pageSize

pageSize:每页显示的条数

pageNum:当前页的页码

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 20,4

首页 上一页  2 3 4 5 下一页 未页

分页插件的使用步骤

1.添加依赖

pom.xml

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.2.0</version></dependency>

image-20221014200154773.png

2.配置分页插件

在mybaitis-config核心配置文件中配置分页插件

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

image-20221014200357612.png 当出现sql语句 select * from t_emp limit 4 limit表达的是第一页显示4条limit会默认为0

数据库的数据

image-20221014201952000.png

@Test
public void testPage(){
    SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
    //查询功能之前开启分页功能
    PageHelper.startPage(1,4);
    List<Emp> list=mapper.selectByExample(null);
    list.forEach(System.out::println);
    sqlSession.close();
}

代码效果只显示了第一页的4条数据

image-20221014201535874.png 将PageHelper.startPage(1,4)中的1改为5

@Test
public void testPage(){
    SqlSession sqlSession = SqlSessionUtil.getSqlSession();
    EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
    //查询功能之前开启分页功能
    PageHelper.startPage(5,4);
    List<Emp> list=mapper.selectByExample(null);
    list.forEach(System.out::println);
    sqlSession.close();
}

image-20221014201733793.png

会发现当查询第一页时

image-20221014202032194.png limit只有一个问号 这就是上面提到的limit只有一个问号时limit的索引值默认为0

查询第五页时limit的查询语句就是平常的写法

image-20221014202412062.png

通过分页插件获取分页相关数据

为了效果更加明显又增了一部分数据

image-20221014204025171.png

image-20221014204136468.png

将分页功能的数据输出得到的

image-20221014204206539.png

将导航分页的页码数设置为5

输出的PageInfo

image-20221014204318262.png

image-20221014204309649.png

含义:

pageNum:当前页的页码

pageSize:每页显示的条数

size:当前页显示的真实条数

total:总记录数

pages:总页数

prePage:上一页的页码

nextPage:下一页的页码

isFirstPage/isLastPage:是否为第一页/最后一页

hasPreviousPage/hasNextPage:是否存在上一页/下一页

navigatePages:导航分页的页码数

navigatepageNums:导航分页的页码,[1,2,3,4,5]