MyBatis--分页插件

12 篇文章 0 订阅

1、搭建步骤

a>添加pom依赖
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>
b>配置分页插件

在MyBatis的核心配置文件中配置插件,位于<typeAliases><environments>之间

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

2、分页插件的使用

a>在查询功能之前开启分页
@Test
public void testPageHelper() {
    try {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        // 开启分页查询,第一个参数为当前页,第二个参数为每页显示的条数
        PageHelper.startPage(1, 3);
        List<Emp> emps = mapper.selectByExample(null);
        emps.forEach(System.out::println);
    } catch (IOException e) {
    	e.printStackTrace();
    }
}

PageHelper.startPage()默认从升序取,若从降序取,则添加第三个参数:

PageHelper.startPage(1, 3,"eid desc");

在这里插入图片描述

此处查询出数据库表中前3条记录

PageHelper.startPage()是有返回值的,若直接输出其返回值

@Test
public void testPageHelper() {
    try {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        // 开启分页查询,第一个参数为当前页,第二个参数为每页显示的条数
        Page<Object> page = PageHelper.startPage(1, 3, "eid asc");
        List<Emp> emps = mapper.selectByExample(null);
        //emps.forEach(System.out::println);
        System.out.println(page);
    } catch (IOException e) {
    	e.printStackTrace();
    }
}

输出结果:

Page{
    count=true, pageNum=1, pageSize=3, startRow=0, endRow=3, total=10, pages=4, reasonable=false, pageSizeZero=false}[
    Emp(eid=1, empName=路飞, age=33, sex=, email=1000@qq.com, did=1), 
    Emp(eid=2, empName=赵云, age=35, sex=, email=101@126.com, did=2), 
    Emp(eid=3, empName=貂蝉, age=30, sex=, email=102@168.com, did=3)
]
b>在查询获取list集合之后,获取分页相关数据
@Test
public void testPageHelper() {
    try {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        // 开启分页查询,第一个参数为当前页,第二个参数为每页显示的条数
        // Page<Object> page = PageHelper.startPage(1, 3, "eid asc");
        PageHelper.startPage(1, 3, "eid asc");
        List<Emp> emps = mapper.selectByExample(null);
        // 第一个参数为分页之后的数据,第二个参数为导航分页的页码数
        PageInfo<Emp> page = new PageInfo<>(emps, 3);
        //emps.forEach(System.out::println);
        System.out.println(page);
    } catch (IOException e) {
    	e.printStackTrace();
    }
}

输出结果:

PageInfo{
    pageNum=1, pageSize=3, size=3, startRow=1, endRow=3, total=10, pages=4, 
    list=Page{
        count=true, pageNum=1, pageSize=3, startRow=0, endRow=3, total=10, pages=4, reasonable=false, pageSizeZero=false}[
        Emp(eid=1, empName=路飞, age=33, sex=, email=1000@qq.com, did=1), 
        Emp(eid=2, empName=赵云, age=35, sex=, email=101@126.com, did=2), 
        Emp(eid=3, empName=貂蝉, age=30, sex=, email=102@168.com, did=3)], 
    prePage=0, nextPage=2, isFirstPage=true, isLastPage=false, hasPreviousPage=false, hasNextPage=true, navigatePages=3, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]}
数据说明
pageNum当前页的页码
pageSize每页显示的条数
size每页显示的条数
startRow从第几行开始
endRow从第几行结束
total总条数
pages总页数
prePage上一页
nextPage下一页
isFirstPage是否是第一页
isLastPage是否是最后一页
hasPreviousPage是否有上一页
hasNextPage是否有下一页
navigatePages导航分页的页码数
navigateFirstPage导航分页从第几页开始
navigateLastPage导航分页到第几页结束
navigatepageNums导航分页的页码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杼蛘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值