mybatis-plus自带分页和pagehelper分页jar包冲突处理

mybatis-plus自带分页和pagehelper分页jar包冲突处理

问题背景

最近需要把项目的mybatis换成mybatis-plus,前期一切正常,可是遇到分页查询的时候,发现pagehelper失效了,但是mybatis-plus自带的分页插件PaginationInnerInterceptor又是正常的,由于项目前期使用的都是pagehelper分页,如果全部替换成mybatis-plus的分页改动的地方很多,并且工作量和风险也大,作为一个有原则的程序员,遇到这种问题就来劲了(领导逼的),下面就记录下问题发现和解决过程。

问题原因

原因只有一个,jar包冲突,主要是com.github.jsqlparser:jsqlparser这个包冲突。
我们使用mybatis-plus分页插件的时候,需要配置一个分页的拦截器,如下:

@Configuration
public class MybatisPlusConfig {

    /**
     * 分页配置
     */
    @Bean
    public MybatisPlusInterceptor innerInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//这里是重点
        return interceptor;
    }

    /**
     * sql增强配置
     */
    @Bean
    public MybatisPlusSqlInjector easySqlInjector() {
        return new MybatisPlusSqlInjector();
    }
}

interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL))这个拦截器里面如下:
在这里插入图片描述
net.sf.jsqlparser.statement.select.SelectExpressionItem.withAlias这个方法只有在jsqlparser 4.0及以上版本才有。
而pagehelper也用到了这个包,用的net.sf.jsqlparser.statement.select.PlainSelect.getGroupByColumnReferences方法,而这个方法只有在jsqlparser 1.4及以下版本才有。
所以,如果同时配置了mybatis-plus的PaginationInnerInterceptor并且引入了pagehelper包,那么,这个时候pagehelper分页会失效,只有mybatis-plus的分页才能正常使用。

解决方案

最简单的解决方案,就是看项目具体想用哪种,因为它们二者不能共存(自己重写jsqlparser包的不算),个人偏向使用mybatis-plus的分页插件,mybatisplus 使用的部分jar包 版本高于 pagehelper 未经过测试 不知道降低适配是否导致隐形问题。毕竟既然使用了mybatis-plus,何必再降低版本去兼容pagehelper,只是有时候开发就这样,改动太大,不敢改,所以妥协。
如果坚持使用pagehelper,那么可以把mybatis-plus-extension中的jsqlparser包剔除掉

 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.4.3.4</version>
            <exclusions>
                <exclusion>
                    <groupId>com.github.jsqlparser</groupId>
                    <artifactId>jsqlparser</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值