Mybatis-分页插件

分页插件:

  1.添加依赖:

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>

  2.在mybatis主配置文件中配置分页插件:

  

 

 

分页插件使用:

  
  使用mybatis的分页插件实现分页功能:

    1.需要在查询功能之前开启分页

     PageHelper.startPage(2【从第几页开始】,4【每页显示的数据】);

/**
     * limit,index,pageSize
     * index:当前页的起始索引
     * pageSize:每页显示的信息条数
     * pageNum:当前的页码
     * index=(pageNum-1)*pageSixe
     */
    @Test
    public void testHelpPage(){
        try {
            InputStream in = Resources.getResourceAsStream("Mybatis.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
            SqlSession session = sqlSessionFactory.openSession(true);
            EmpMapper mapper = session.getMapper(EmpMapper.class);
            PageHelper.startPage(2,4);
            List<Emp> emps = mapper.selectByExample(null);
            PageInfo<Emp> page = new PageInfo<>(emps,5);
            System.out.println(page);
            emps.forEach(emp -> System.out.println(emp));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

  2.在查询功能结束后获取分页相关信息

PageInfo<Emp> page = new PageInfo<>(emps,5);进行导航分页

  emps:表示分页数据

  5:表示当前导航分页的数量

  运行结果:  

 

   显示第二页,一页4条数据

  

结果具体分析:

  

PageInfo{pageNum=2, pageSize=4, size=4, startRow=5, endRow=8, total=11, pages=3, list=Page{count=true, pageNum=2, pageSize=4, startRow=4, endRow=8, total=11, pages=3, reasonable=false, pageSizeZero=false}prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true, navigatePages=5, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]}

  pageNum=2表示当前页码数

   pageSize=4:表示一页的数据

   size=4:这第二页的真实数据个数

  startRow=5:第二页四个数据从数据库表单中第5个数据开始

  endRow=8:第二页四个数据从数据库表单中第8个数据结束

  total=11:数据库表单总数据条数

   pages=3:总页数

  prePage=1:这页的上一页

  nextPage=3:这页的下一页

   isFirstPage=false:判断是否是第一页

  isLastPage=false:判断是否是最后一页

  hasPreviousPage=true:是否有上一页

   hasNextPage=true:是否有下一页

   navigatePages=5:这个就是我们在方法中输入的参数(PageInfo<Emp> page = new PageInfo<>(emps,5);

  navigateFirstPage=1:导航分页从第1页开始

  navigateLastPage=3:导航分页从第3页结束

  navigatepageNums=[1, 2, 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]

 

posted @ 2022-03-03 16:51  Soleili  阅读(1029)  评论(0编辑  收藏  举报