12、Mybatis之分页插件
阅读原文时间:2023年08月21日阅读:1

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

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

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

12.3.1、未分页查询示例

    @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、分页查询示例

注意:从控制台日志可知,开启分页功能后,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、分页查询进阶示例

    @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]

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章