SSM——mybatis使用分页插件PageHelper

8 篇文章 0 订阅

六、分页插件

分页插件使用前置分析

limit index,pageSize

pageSize:每页显示的条数

pageNum:当前页的页码

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

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

首页上一页 2 3 4 5 6 下一页 末页

首页和上一页 只需要判断 当前页码 不为第一页

下一个和末页 只需要判断 当前页码 不为最后一页(需要计算:一共有几页,这个几页就是最后一页)

count:总记录数

totalPage:总页数

//实现下一页和末页

totalPage = count / pageSize; (若能整除正确,❌但是若可能不会整除,需要添加以下判断)

if(count % pageSize != 0){//若前面不能整除,需要在此处增加判断,判断不能被整除将页码+1

	totalPage += 1;

}

中间导航页实现(展示中间五个页码:若为第一页前面两页能是-1,0页吗?增加判断显示1,2,3,4;若访问最后两页,能展示最大页码+1和+2吗?增加判断显示倒数5页)

分页插件为我们做完了这些判断,若没有分页插件需要考虑到以上提到的所有情况

6.1 分页插件的使用使用步骤

1.添加依赖
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.3.0</version>
</dependency>
2.配置分页插件

在MyBatis的核心配置文件中配置插件

<plugins>
    <!--设置分页插件-->
    <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

PageInterceptor分页拦截器,在我们查询之前添加limit将分页的信息添加进去。

3.分页插件的使用

a>在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能

  • pageNum:当前页的页码

  • pageSize:每页显示的条数

b>在查询获取list集合之后,使用PageInfo pageInfo = new PageInfo<>(List list, int navigatePages)获取分页相关数据

  • list:分页之后的数据

  • navigatePages:导航分页的页码数

c>分页相关数据 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]

4.使用测试类
public class PageTest {
    @Test
    public void testPage(){
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        //查询功能开始之前开启分页功能, pageNum:当前页的页码 pageSize:每页显示的条数
        Page<Object> page = PageHelper.startPage(1, 4);
        //添加分页参数之后,现在查询只查询前四条数据
        List<Emp> list = mapper.selectByExample(null);
        //返回Emp类型的PageInfo对象,里面保存了分页需要的所有参数
        PageInfo<Emp> pageInfo = new PageInfo<>(list, 5);
        list.forEach(System.out::println);
        System.out.println(page);
        System.out.println(pageInfo);
    }
}

资料来源:B站UP尚硅谷

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值