PageHelper分页插件详解与使用

需积分: 9 40 下载量 91 浏览量 更新于2024-07-20 收藏 31KB DOCX 举报
"Mybatis分页插件PageHelper的使用说明" Mybatis分页插件PageHelper是一款方便易用的数据库分页工具,适用于多种数据库,包括Oracle、Mysql、MariaDB、SQLite、Hsqldb和PostgreSQL。它通过提供拦截器来实现对Mybatis查询的自动分页处理,使得开发过程中无需手动编写复杂的分页SQL语句。 版本说明 PageHelper的最新版本为3.4.2,在这个版本中,PageInfo类的`judgePageBoundary`方法进行了调整,判断是否为最后一页的条件更改为`isLastPage=pageNum==pages;`。之前版本3.4.1修复了一个重大bug,当SqlParser解析SQL失败时,会返回不包含`count(*)`的SQL,导致查询失败。此外,3.4.0版本增加了对`@SelectProvider`注解方法的支持,优化了内部逻辑,减少了反射调用和获取BoundSql的次数,并对所有支持的数据库进行了完整测试。 使用方法 1. Page<E>:分页参数类,继承自ArrayList,作为分页查询的结果容器。尽管查询结果为Page对象,但建议在代码中将其当作List使用。如果需要分页信息,可以通过PageInfo类对List进行包装。 2. PageHelper:这是分页插件的核心拦截器类,实现了对Mybatis查询的拦截和分页处理。 3. PageInfo:Page对象的包装类,提供了丰富的分页属性信息,如总页数、当前页、每页记录数等,方便在前端展示分页导航。 4. SqlParser:提供高效计数查询功能,智能替换原SQL为`count(*)`,移除不带参数的`orderby`语句,需要jsqlparser-0.9.1.jar库支持。 5. SqlUtil:分页插件的工具类,包含主要的分页逻辑实现。 引入分页插件 有三种方式引入PageHelper: 1. 直接引入分页代码:将插件中的`com.github.pagehelper`包复制到项目中,根据需求进行定制。 2. Maven或Gradle依赖:在构建工具的配置文件中添加PageHelper的依赖,自动管理库的引入。 3. 手动添加JAR包:下载PageHelper的JAR包并将其添加到项目的类路径中。 配置与使用 在Mybatis的配置文件中,需要添加PageHelper拦截器的配置,如下所示: ```xml <configuration> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 设置数据库类型 --> <property name="helperDialect" value="mysql"/> <!-- 是否自动打印日志 --> <property name="reasonable" value="true"/> <!-- 分页参数合理化,默认开启 --> <property name="supportMethodsArguments" value="true"/> <!-- 关闭params参数 --> <property name="params" value="offset=start;pageSize=limit"/> </plugin> </plugins> </configuration> ``` 在Java代码中,只需在查询方法前添加`@PageHelper`注解,或者在SqlSession的开始处调用`PageHelper.startPage(pageNum, pageSize)`,即可实现分页效果。 注意事项 - 在使用PageInfo时,要确保在获取数据列表后立即创建PageInfo对象,以避免数据被修改导致的分页信息不准确。 - 配置PageHelper时,确保正确设置数据库类型,以便插件能正确处理特定数据库的分页语法。 - 为了性能优化,可以开启`reasonable`属性,使分页参数更加合理化。 PageHelper简化了Mybatis的分页操作,提升了开发效率,是Mybatis项目中常用的分页解决方案。