【MyBatis】插件篇——PageHelper分页

【MyBatis系列】基础篇——curd语法

【MyBatis系列】基础篇——参数传递

【MyBatis系列】基础篇——ResultMap自定义映射

【MyBatis系列】基础篇——动态sql

【MyBatis系列】基础篇——一级缓存 二级缓存

【MyBatis系列】基础篇——驼峰式命名配置

【MyBatis系列】插件篇——逆向工程(代码生成器)

【MyBatis系列】插件篇——PageHelper分页



一、简介

  1. PageHelper是MyBatis中的一个第三方分页插件
  2. 对照官方文档的说明,快速的使用插件

二、使用步骤

1) 导入jar包

pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar

和 两个日志jar包
在这里插入图片描述

2) 在MyBatis全局配置文件中配置分页插件

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

在这里插入图片描述

3) 编写代码:Page对象实现分页

(1)Page对象实现分页
  • 在查询之前通过PageHelper.startPage(页码,条数)设置分页信息,该方法返回Page对象
@Test
    public void testPage()  throws Exception{
        String resource = "mybatis-config.xml";
        //获取src下面配置文件输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建SqlSession工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建SQLSession对象,参数值true表示事务自动提交
        SqlSession session = sqlSessionFactory.openSession(true);
        try {

            //Mapper接口:获取Mapper接口的 代理实现类对象
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);

            //1:创建page对象
            //startPage方法传递2个参数:第一个是当前页,第二个是每页显示记录数
            Page<Object> page = PageHelper.startPage(1,3);

            //2:调用方法查询表中所有记录
            List<Employee> list = mapper.selectByExample(null);

            for (Employee emp:list){
                System.out.println(emp);
            }
            //3:实现分页查询之后,pageHelper把分页信息封装page对象里面
            int pageNum = page.getPageNum(); //当前页
            int pages = page.getPages();//总页数
            int pageSize = page.getPageSize(); //每页显示记录数
            long total = page.getTotal(); //总记录数

            System.out.println(pageNum);
            System.out.println(pages);
            System.out.println(pageSize);
            System.out.println(total);

        } finally {
            session.close();
        }
    }

结果:

在这里插入图片描述

(2)PageInfo对象实现分页
  • 在查询完数据后,使用PageInfo对象封装查询结果,可以获取更详细的分页信息以及可以完成分页逻辑
@Test
    public void testPageInfo()  throws Exception{
        //配置文件信息
        String resource = "mybatis-config.xml";
        //获取src下面配置文件输入流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建SqlSession工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过工厂创建sqlSession对象,参数值true表示事务自动提交
        SqlSession session = sqlSessionFactory.openSession(true);

        try {
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);

           //1 2 创建page对象,查询所有记录
            Page<Object> page = PageHelper.startPage(3, 3);
            List<Employee> list = mapper.selectByExample(null);

            //3 把分页查询之后所有信息封装到pageInfo对象里面
            //PageInfo(List<T> list, int navigatePages)
            // 第一个参数分页数据list集合
            //第二个参数 页码数显示多少个
            PageInfo<Employee> info = new PageInfo<>(list,2);

            System.out.println("当前页: " + info.getPageNum());
            System.out.println("总页码: " + info.getPages());
            System.out.println("总条数: " + info.getTotal());
            System.out.println("每页显示的条数: " + info.getPageSize());

            System.out.println("是否是第一页: " + info.isIsFirstPage());
            System.out.println("是否是最后一页: " + info.isIsLastPage());
            System.out.println("是否有上一页: " + info.isHasPreviousPage());
            System.out.println("是否有下一页: " + info.isHasNextPage());

            System.out.println("============分页逻辑===============");
            int[] nums = info.getNavigatepageNums(); //所有页面数
            for(int num:nums) {
                System.out.println(num);
            }
        } finally {
            session.close();
        }
    }

结果:
在这里插入图片描述


感谢阅读哇~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PageHelper中,PageInfo对象的参数含义如下: - pageNum:表示当前的页码 - pageSize:表示每页显示的条数 - size:表示当前页实际的条数 - startRow:表示当前页的起始行数 - endRow:表示当前页的结束行数 - total:表示总的记录数 - pages:表示总的页数 - list:表示当前页的数据集合 - firstPage:表示是否为第一页 - prePage:表示上一页的页码 - nextPage:表示下一页的页码 - lastPage:表示是否为最后一页 - isFirstPage:表示是否为第一页 - isLastPage:表示是否为最后一页 - hasPreviousPage:表示是否有上一页 - hasNextPage:表示是否有下一页 - navigatePages:表示导航页码数 - navigatepageNums:表示所有导航页码的数组 这些参数可以帮助我们在使用PageHelper进行分页查询时,了解当前页的信息,从而方便我们进行相关的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【防坑指南】使用Mybatis分页插件PageHelper为什么PageInfo对象出现null的原因](https://blog.csdn.net/weixin_39148512/article/details/80182095)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cakeAndAle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值