09.MyBatis整合PageHelper实现分页功能

407 阅读1分钟

09.MyBatis整合PageHelper实现分页功能

  • MyBatis可以使用第三方的插件来对功能进行扩展,分页组手PageHelper是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据。

    开发步骤:

    1. 导入通用的PageHelper依赖
    2. 在MyBatis核心配置文件中配置PageHelper插件
    3. 测试分页数据的获取

1.导入通用的PageHelper依赖

 <!-- 分页助手 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>3.7.5</version>
        </dependency>
​
        <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>0.9.1</version>
        </dependency>

2.在MyBatis核心配置文件中配置PageHelper插件

注意:核心配置文件的标签是有顺序先后的,看下图标签放在第一个位置,就报错了。按照顺序plugins应该放在标签前。

image-20220222101840275

<plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
<!--        dialect:指定方言 limit(mysql使用的分页语法是limit)-->
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>

3.测试分页代码实现

  • Mapper.xml的sql

        <select id="findUser" resultType="user">
            select *
            from `user`
        </select>
    
  • 测试类:

    @Test
        public void test6() throws IOException {
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            //设置分页参数
            //参数1:当前页
            //参数2:每页显示的条数
            PageHelper.startPage(1,2);
            List<User> byArray = userMapper.findUser();
            for(User user4: byArray){
                System.out.println(user4);
            }
            //获取分页相关的其他参数
            PageInfo<User> pageInfo = new PageInfo<User>(byArray);
            System.out.println("总页数:"+pageInfo.getPages());
            System.out.println("总条数:"+pageInfo.getTotal());
            System.out.println("是否为第一页:"+pageInfo.isIsFirstPage());
            sqlSession.close();
        }
    
  • 测试结果