12、Mybatis之分页插件

12.1、引入依赖

image

        <!--分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>

12.2、配置分页插件

image

注意:plugins标签要在environments标签之前

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

12.3、使用示例

12.3.1、未分页查询示例

image

    @Test
    public void testPagehelper(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
        List<Emp> emps = empMapper.selectByExample(null);
        for (Emp emp : emps) {
            System.out.println(emp);
        }
    }

12.3.2、分页查询示例

image

注意:从控制台日志可知,开启分页功能后,Pagehelper会通过拦截器的方式自动在查询sql中添加limit语句;
其中,语句的第一个参数值为(pageNum-1)*pageSize;第二个参数值为pageSize

    @Test
    public void testPagehelper(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);

        //在查询之前,使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
        //pageNum:当前页的页码
        //pageSize:每页显示的条数
        PageHelper.startPage(2,3);

        List<Emp> emps = empMapper.selectByExample(null);
        for (Emp emp : emps) {
            System.out.println(emp);
        }
    }

12.3.3、分页查询进阶示例

image

    @Test
    public void testPagehelper(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);

        //在查询之前,使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
        //pageNum:当前页的页码
        //pageSize:每页显示的条数
        PageHelper.startPage(2,3);

        List<Emp> emps = empMapper.selectByExample(null);

        //在查询获取list集合之后,使用PageInfo<T> pageInfo = new PageInfo<>(List<T> list, int navigatePages)获取分页相关数据
        //list:分页之后的数据
        //navigatePages:导航分页的页码数
        PageInfo<Emp> empPageInfo = new PageInfo<Emp>(emps,3);
        System.out.println(empPageInfo);
    }

12.3.3.1、分页相关数据详解

PageInfo{
pageNum=2, pageSize=3, size=3, startRow=4, endRow=6, total=9, pages=3, 
list=Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=9, pages=3, reasonable=false, pageSizeZero=false}
[Emp{empId=4, empName='小军', age=null, gender='女', deptId='null'}, 
Emp{empId=5, empName='小明1', age=20, gender='男', deptId='null'}, 
Emp{empId=8, empName='小红', age=25, gender='男', deptId='null'}], 
prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true, 
navigatePages=3, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]
}
属性 解析
pageNum 当前页的页码
pageSize 每页显示的条数
size 当前页显示的真实条数
total 总记录数
pages 总页数
prePage 上一页的页码
nextPage 下一页的页码
isFirstPage 是否为第一页
isLastPage 是否为最后一页
hasPreviousPage 是否存在上一页
hasNextPage 是否存在下一页
navigatePages 导航分页的页码数
navigatepageNums 导航分页的页码,[1, 2, 3]
posted @ 2023-07-14 01:07  Javaer1995  阅读(134)  评论(0编辑  收藏  举报