mybatis:pageHelper分页功能

本文介绍MyBatis中PageHelper分页插件的使用方法,包括配置步骤、实现分页查询及结果封装。PageHelper简化了MyBatis的分页操作,通过配置插件和调用API即可完成复杂分页功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、• PageHelper是MyBatis中非常方便的第三方分页插件。

      官方文档:https://github.com/pagehelper/MybatisPageHelper/blob/master/README_zh.md我们可以对照官方文档的说明,快速的使用插件

二、使用步骤

1、导入相关包pagehelper-x.x.x.jar jsqlpars0.9.5.jar

2、在MyBatis全局配置文件中配置分页插件。

3、使用PageHelper提供的方法进行分页

4、可以使用更强大的PageInfo封装返回结果

  <!--配置mybatis分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.6</version>
        </dependency>

全局配置文件配置插件 :拦截器

<plugins>
        <!--这两个自己定义的插件:-->
        <!--<plugin interceptor="com.mybatis.plugin.MyFirstPlugin">
            <property name="userName" value="root"/>
            <property name="password" value="132456"/>
        </plugin>
        <plugin interceptor="com.mybatis.plugin.MySecondPlugin">

        </plugin>-->

        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
            <property name="param1" value="value1"/>
        </plugin>
    </plugins>

 @Test
    public void testPageHelper() throws IOException {
        //获取sqlSessionFactory对象
        SqlSession session = getSqlSession();

        //获取mapper接口,然后调用接口方法,具体的实现在配置文件中有sql
        EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
        //分页查询第一页,每页三条信息
        Page<Object> page = PageHelper.startPage(1, 3);

        List<Employee> emps = mapper.getEmps();
        for (Employee e: emps) {
            System.out.println(e);
        }

        System.out.println("页码大小"+page.getPageSize());
        System.out.println("总共多少记录数:"+page.getTotal());

        /**************pageInfo******************/


        PageInfo<Employee> pageInfo = new PageInfo<>(emps);

        System.out.println("是否第一页"+pageInfo.isIsFirstPage());

        /********************************************************/
        PageInfo<Employee> pageInfos = new PageInfo<>(emps,4);
        System.out.println("开始连续显示页码数");

        int[] nums = pageInfos.getNavigatepageNums();
        for(int i :nums) {
            System.out.println(i);
        }
    }

方式一:传参page

方式二:结果封装为new PageInfo(emps);

1 在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
2 在查询获取list集合之后,使用PageInfo<T> pageInfo = new PageInfo<>(List<T> list, int
navigatePages)获取分页相关数据

@Test
public void testPageHelper() throws IOException {
	InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
	SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
	SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
	SqlSession sqlSession = sqlSessionFactory.openSession(true);
	EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
	PageHelper.startPage(1, 4);
	List<Emp> emps = mapper.selectByExample(null);
	PageInfo<Emp> page = new PageInfo<>(emps,5);
	System.out.println(page);
}

在PageHelper.startPage() 后面的第一个查询会默认使用分页查询,也就是说不必自己再写一个sql去查询总的条数。查询出来的结果使用pageInfo这个类进行接收。

/*
	list:查询出来的数据,也就是上面的集合users
	navigatePages:导航分页的数量(这个值不建议写偶数,因为导航分页会不对称)
*/
PageInfo<User> pageInfo = new PageInfo<User>(list,navigatePages);

导航分页(navigatePages)介绍:假设一共有20个页码,页面一次展示5个页面
百度的一次展示了10个页码

以当前页码为准,从减2开始,加2结束(保证页面展示5个页码)
假设当前在第3页(开始页:3-2=1,结束页3+2=5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值