ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

分页插件PageHelper配置步骤(mybatis)

2026/8/15 14:05:13 拓冰建站 浏览量
分页插件PageHelper配置步骤(mybatis) 摘要本文详细介绍了MyBatis PageHelper分页插件的工作原理、配置方法和使用步骤帮助开发者快速掌握这一高效的分页解决方案。一、PageHelper分页原理要理解PageHelper的工作原理首先需要了解MyBatis执行SQL的基本流程通过SqlSessionFactory创建SqlSessionSqlSession通过Executor执行器对象执行SQLExecutor处理MappedStatementSQL语句封装对象PageHelper的核心原理是在MappedStatement执行前通过拦截器Interceptor在原始SQL语句上自动添加LIMIT分页语句从而实现物理分页功能。执行流程示意图SqlSessionFactory → SqlSession → Executor → MappedStatementPageHelper拦截并添加LIMIT二、PageHelper配置步骤1. 引入PageHelper依赖在项目的pom.xml中添加PageHelper依赖dependency groupIdcom.github.pagehelper/groupId groupIdpagehelper/groupId version最新版本/version /dependency2. MyBatis配置文件配置在mybatis-config.xml中配置PageHelper插件?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration plugins !-- plugins配置位置必须符合要求 -- plugin interceptorcom.github.pagehelper.PageHelper property namedialect valuemysql/ property nameoffsetAsPageNum valuetrue/ property namerowBoundsWithCount valuetrue/ property namepageSizeZero valuetrue/ property namereasonable valuetrue/ /plugin /plugins /configuration3. Spring配置文件配置可选如果使用Spring集成MyBatis也可以在Spring配置文件中配置bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean property namedataSource refdataSource/ property namemapperLocations array valueclasspath:mapper/*.xml/value /array /property property nameplugins array bean classcom.github.pagehelper.PageHelper property nameproperties value dialectmysql reasonabletrue /value /property /bean /array /property /bean三、配置参数详解PageHelper提供了多个配置参数以下是主要参数说明参数名默认值说明dialect无必须指定数据库方言可选值mysql, oracle, mariadb, sqlite, hsqldb, postgresqloffsetAsPageNumfalse设置为true时将RowBounds的offset参数作为pageNum使用rowBoundsWithCountfalse设置为true时使用RowBounds分页会进行count查询pageSizeZerofalse设置为true时pageSize0会查询全部结果仍返回Page类型reasonablefalse启用合理化pageNum1查询第一页pageNumpages查询最后一页四、代码使用示例1. 基本使用方式// 查询所需数据条件 ListTbItem list tbItemMapper.selectByExample(new TbItemExample()); // 设置分页信息第几页每页数量 PageHelper.startPage(pageNum, pageSize); // 获取分页结果 PageInfoTbItem pageInfo new PageInfo(list); // 获取分页数据 long total pageInfo.getTotal(); // 总记录数 int pages pageInfo.getPages(); // 总页数 int pageNum pageInfo.getPageNum(); // 当前页码 int pageSize pageInfo.getPageSize(); // 每页数量 int startRow pageInfo.getStartRow(); // 起始行 int endRow pageInfo.getEndRow(); // 结束行2. PageInfo常用方法// 分页信息获取 pageInfo.getFirstPage(); // 第一页页码 pageInfo.getLastPage(); // 最后一页页码 pageInfo.isFirstPage(); // 是否是第一页 pageInfo.isLastPage(); // 是否是最后一页 pageInfo.isHasPreviousPage(); // 是否有上一页 pageInfo.isHasNextPage(); // 是否有下一页五、注意事项分页生效位置只有紧跟在PageHelper.startPage()方法后的第一个查询方法会被分页SQL限制不支持带有FOR UPDATE的语句分页关联查询不支持关联结果查询的分页线程安全PageHelper.startPage()方法使用了ThreadLocal确保线程安全排序问题如果需要排序建议在SQL中使用ORDER BY而不是在Java代码中排序六、总结PageHelper作为MyBatis的优秀分页插件通过拦截器机制实现了简洁高效的分页功能。其主要优势包括使用简单只需调用PageHelper.startPage()即可实现分页功能完善支持多种数据库提供丰富的分页信息性能优化自动进行count查询支持合理化分页参数兼容性好支持MyBatis原生接口和Spring集成通过本文的介绍相信您已经掌握了PageHelper的基本原理和使用方法。在实际开发中合理配置参数并根据业务需求选择合适的分页策略可以显著提升系统性能和开发效率。