mp Pagehelper分页源码

基本使用
1 导入依赖
在这里插入图片描述

  1. 添加插件
 <plugins>
 <!-- com.github.pagehelper为PageHelper类所在包名 --> 
                <plugin interceptor="com.github.pagehelper.PageInterceptor">
                    <!-- 使用MySQL方言的分页 -->
                    <property name="helperDialect" value="mysql"/>
                    <!--如果使用mysql,这里 value为mysql--> 
                <property name="pageSizeZero" value="true"/> 
            </plugin> 
            </plugins>
  1. 业务层代码
  2. 在这里插入图片描述
    流程图:
    在这里插入图片描述
    核心源码
    在这里插入图片描述
    在这里插入图片描述
### MyBatisPlus 中 PageHelper 分页参数失效的原因分析 在 MyBatisPlus (MP) 和 PageHelper 的组合使用场景下,分页功能可能会因为某些配置或依赖冲突而失效。以下是可能导致此问题的具体原因以及对应的解决方案。 #### 配置文件中的合理化设置 如果 `reasonable` 属性未被正确启用,则可能引发分页逻辑异常。确保在 `application.yml` 或 `application.properties` 文件中设置了合理的分页属性[^1]: ```yaml pagehelper: reasonable: true helperDialect: mysql supportMethodsArguments: true params: count=countSql ``` 上述配置项的作用如下: - **reasonable**: 启用合理化模式,在查询总记录数为零时不会抛出异常。 - **helperDialect**: 指定数据库方言(如 MySQL),用于生成适配的 SQL 查询语句。 - **supportMethodsArguments**: 支持通过方法参数来传递分页参数。 - **params**: 自定义参数映射规则。 #### 插件初始化顺序的影响 当同时引入 MPPageHelper 时,可能存在插件加载顺序不一致的情况。这会干扰拦截器的行为,从而导致分页参数无法正常解析。建议按照以下方式调整插件注册顺序[^2]: ```java @Configuration public class MyBatisConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } @Bean public PageHelper pageHelper() { PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("reasonable", "true"); properties.setProperty("supportMethodsArguments", "true"); properties.setProperty("helperDialect", "mysql"); pageHelper.setProperties(properties); return pageHelper; } } ``` 在此代码片段中,优先注册了 MP分页拦截器 (`PaginationInnerInterceptor`) 并指定其适用于 MySQL 数据库环境。随后再实例化并配置 PageHelper 插件对象。 #### 依赖版本兼容性问题 由于 MPPageHelper 均涉及底层增强机制,不同版本间的 API 变更容易引起冲突。例如,PageHelper 对于部分高版本 MP 不完全支持。因此需确认两者之间的版本匹配关系[^3]。推荐使用的版本范围如下表所示: | MyBatisPlus 版本 | PageHelper 版本 | |------------------|----------------| | >= 3.4 | ~5.1.x | 可通过 Maven POM 文件锁定具体依赖版本号: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> </dependency> ``` 以上示例展示了如何显式声明所需组件的确切版本以规避潜在风险。 --- ### 总结 针对 MyBatisPlus 中 PageHelper 分页参数失效的问题,应着重检查以下几个方面:一是全局配置是否完备;二是插件加载次序是否存在偏差;三是所选框架间是否有已知兼容隐患。综合采取措施后通常可以有效恢复预期行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值