Mybatis-Plus分页插件

Posted Shinka_YXS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis-Plus分页插件相关的知识,希望对你有一定的参考价值。

MybatisPlusConfig类

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 此类copy自官方文档中介绍的SpringBoot方式 https://mp.baomidou.com/guide/page.html
 */
@Configuration
public class MybatisPlusConfig {

    // 旧版
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        // paginationInterceptor.setLimit(500);
        // 开启 count 的 join 优化,只针对部分 left join
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        return paginationInterceptor;
    }

    // 最新版
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.mysql));
        return interceptor;
    }

}

MybatisSqlSessionFactoryBean设置插件

// 设置 MyBatis-Plus 分页插件
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
Interceptor[] plugins = {new MybatisPlusConfig().mybatisPlusInterceptor()};
bean.setPlugins(plugins);

报错排查

若在xml传入page使用分页查询时正常,而在使用baseMapper.selectPage(page, wrapper)查询时报错:

net.sf.jsqlparser.statement.select.PlainSelect.getGroupBy()Lnet/sf/jsqlparse

原因:在使用mybatis分页插件时,需要依赖jsqlparser。这个错误表示分页插件版本与依赖版本不匹配。

解决:本次主要是jsqlparser版本较低(1.0),改为3.1版本之后可正常使用

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.4</version>
</dependency>
<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
    <version>3.1</version>
</dependency>

参考

MybatisPlus官方指南

SpringBoot集成mybatis分页插件问题

为啥MyBatis-Plus 分页插件不生效?

MyBatis-Plus 分页插件失效分析

使用mybatis分页插件报错

以上是关于Mybatis-Plus分页插件的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis-Plus03_分页插件自定义分页

MyBatis-Plus03_分页插件自定义分页

mybatis-plus 分页插件

四步教你SpringBoot+Mybatis-plus分页插件(简单实现)

Mybatis-Plus分页插件

Mybatis-Plus分页插件