mybatis之分页助手的使用

mybatis之分页助手的使用

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

注意版本的问题:

  •   pagehelper的版本问题,版本为5.0之后的插件使用的接口为:com.github.pagehelper.PageInterceptor

  •   版本为4…0.0之前的版本采用的接口为:com.github.pagehelper.PageHelper

1.1. 开发步骤

1.1.1. 导入通用PageHelper的坐标

在pom.xml中导入通用PageHelper坐标


        
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelperartifactId>
            <version>5.1.4version>
        dependency>
        <dependency>
            <groupId>com.github.jsqlparsergroupId>
            <artifactId>jsqlparserartifactId>
            <version>0.9.1version>
        dependency>

1.1.2. 在mybatis核心配置文件中配置PageHelper插件

在mybatis核心配置文件中配置PageHelper插件



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

1.1.3. 分页助手的具体使用

然后你就在你所需要使用到的地方进行相关的使用即可,此处在测试中进行分页代码的实现,展示相关的API

此处直接用 PageHelper调用它的静态方法startPage(当前页,显示的条数)即可。

代码的实现:

    @Test
    public void test1() throws IOException {

        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        //设置分页参数
        PageHelper.startPage(1,2);

        List<User> list = mapper.findAll();

        for (User user : list) {

            System.out.println(user);
        }



    }

获取分页的其他参数:

    //其他分页的数据
    
    //此处只需要在建立PageInfo类,选择当前的类型,传入以上装载分页的数据的list集合即可
    PageInfo<User> pageInfo = new PageInfo<User>(list);
    
    System.out.println("总条数:"+pageInfo.getTotal());
    System.out.println("总页数:"+pageInfo.getPages());
    System.out.println("当前页:"+pageInfo.getPageNum());
    System.out.println("每页显示长度:"+pageInfo.getPageSize());
    System.out.println("是否第一页:"+pageInfo.isIsFirstPage());
    System.out.println("是否最后一页:"+pageInfo.isIsLastPage());

1.2. 使用分页助手的注意事项

1.PageHelper只对紧跟着的第一个查询的SQL语句起作用

  若一个方法中涉及到多个查询,需要小心,避免为不需要分页的添加了分页,而真正需要分页的却没有被分页

2.分页插件不支持带有for update语句的分页

  对于带有for update的sql,会抛出异常,对于这样的sql建议手动分页,毕竟这样的sql需要注意

3.分页插件不支持关联结果查询

  分页插件不支持关联结果查询,但是支持关联嵌套查询。只会对主sql进行分页,嵌套的sql不会被分页。

你可能感兴趣的:(SSM框架)