mybatis-plus3.5分页插件使用(PaginationInterceptor)
背景
自从mybatis-plus某版本3.4/3.5更新之后,原先的分页插件paginationInterceptor无法正常使用,这里给出最新的solution。
paginationInterceptor 变更为 paginationInnerInterceptor
验证
旧版配置
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; @EnableTransactionManagement @Configuration @MapperScan("com.egag.cert.mapper") public class MybatisPlusConfig { /** * 分页插件(old) * @authorzhengkai.blog.csdn.net */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false // paginationInterceptor.setOverflow(false); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInterceptor.setLimit(1000); // 开启 count 的 join 优化,只针对部分 left join paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); return paginationInterceptor; } }
新版java配置
package com.software.dev.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; import java.util.Collections; @EnableTransactionManagement @Configuration @MapperScan("com.software.dev.mapper") public class MybatisPlusConfig { /** * 分页插件 3.5.X * @author zhengkai.blog.csdn.net */ @Bean public PaginationInnerInterceptor paginationInnerInterceptor() { PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInterceptor.setMaxLimit(-1L); paginationInterceptor.setDbType(DbType.MYSQL); // 开启 count 的 join 优化,只针对部分 left join paginationInterceptor.setOptimizeJoin(true); return paginationInterceptor; } @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); mybatisPlusInterceptor.setInterceptors(Collections.singletonList(paginationInnerInterceptor())); return mybatisPlusInterceptor; } }
参考: