同时使⽤mybatis和mybatis-plus时,pageHelper失效问题解决⼀、问题由来
最近刚拿到⼀个别⼈的项⽬,该项⽬中使⽤mybatis和mybatis-plus来操作数据库,我们需要在此基础上添加新功能。
做功能开发时⼀切都很顺利,我也很快完成了⾃⼰负责的模块,然后和前端开始对接。可是在测试时发现⼀个问题,那就
是后台返回的数据中,没有分页信息,⽽我们做的功能⼜需要分页信息。我⽴马去进⾏排查,发现果然如此,确实没有分
页信息。可是为什么会没有呢?之前另外⼀个⼦系统中都⽤得好好的,我都是复制、粘贴过来的。然后开始分析原因。spring framework
⼆、问题分析
⾸先是测试,发现确实没有返回分页数据,然后打断点查看Service中查询的结果是否有分页数据返回,查看的结果是没有。
问题就是查询的时候出现的,⽽且在查询之前我已经设置了分页参数如下,
PageHelper.PageNum(), PageSize());并且也在配置⽂件中添加了分页相关的设置。
pagehelper.helper-dialect=mysql
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
pagehelper.offsetAsPageNum=true
按理说应该没问题才对,可实际上确实出现了问题。
三、解决⽅案
我去百度⾥⾯搜索了⼀下,⽽且也询问了同事雪球解决⽅案。⼀个⼀个的尝试,反正暂时也没有好的解决办法。
尝试⼀在l⽂件中引⼊pageHlper的启动依赖,尝试后没有解决;
尝试⼆添加如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<scope>test</scope>
</dependency>
测试结果没有解决。
尝试三添加⼀个类,这个类⽤于初始化 PageInterceptor 这个类,这⼀次尝试成功,正确返回分页数据。代码如下:
import batisplus.plugins.PaginationInterceptor;
import batisplus.spring.boot.starter.ConfigurationCustomizer;
import com.github.pagehelper.PageInterceptor;
import t.annotation.Bean;
import t.annotation.Configuration;
import java.util.Properties;
@Configuration
public class MyBatisPlusConfig {
/*
* 分页插件,⾃动识别数据库类型
* 多租户,请参考官⽹【插件扩展】
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
@Bean
PageInterceptor pageInterceptor(){
PageInterceptor pageInterceptor = new PageInterceptor();
Properties properties = new Properties();
properties.setProperty("helperDialect", "mysql");
pageInterceptor.setProperties(properties); // 由此可进⼊源码,
return pageInterceptor;
}
}
经过反复的尝试,终于解决了这个问题,虽然⽬前还不是太清楚原因。⾃⼰的判断是使⽤Mybatis-plus的时候,
不会再⾃动⽣成PageInterceptor这个类,需要⼿动⽣成,所以才导致了不能正常分页。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论