Mybatis Plus 3.4版本之後分頁外掛的變化

Mybatis Plus 3.4版本之後分頁外掛的變化

一、MybatisPlusInterceptor

> 從Mybatis Plus 3。4。0版本開始,不再使用舊版本的PaginationInterceptor ,而是使用MybatisPlusInterceptor。

MybatisPlusInterceptor是一系列的實現InnerInterceptor的攔截器鏈,也可以理解為一個集合。可以包括如下的一些攔截器

自動分頁: PaginationInnerInterceptor(最常用)

多租戶: TenantLineInnerInterceptor

動態表名: DynamicTableNameInnerInterceptor

樂觀鎖: OptimisticLockerInnerInterceptor

sql效能規範: IllegalSQLInnerInterceptor

防止全表更新與刪除: BlockAttackInnerInterceptor

二、舊版分頁外掛配置方法(Mybatis Plus 3。4。0版本之前)

@Configuration@MapperScan(basePackages = {“com。zimug。**。mapper”})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; }}

三、新的分頁外掛配置方法(Mybatis Plus 3。4。0版本及其之後的版本)

新的分頁外掛,一緩和二緩遵循mybatis的規則,需要設定 MybatisConfiguration#useDeprecatedExecutor = false 避免快取出現問題

@Configuration@MapperScan(basePackages = {“com。zimug。**。mapper”})public class MybatisPlusConfig { /** * 新的分頁外掛,一緩和二緩遵循mybatis的規則,需要設定 MybatisConfiguration#useDeprecatedExecutor = false 避免快取出現問題(該屬性會在舊外掛移除後一同移除) */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //向Mybatis過濾器鏈中新增分頁攔截器 interceptor。addInnerInterceptor(new PaginationInnerInterceptor(DbType。MYSQL)); //還可以新增i他的攔截器 return interceptor; } @Bean public ConfigurationCustomizer configurationCustomizer() { return configuration -> configuration。setUseDeprecatedExecutor(false); }}

四、分頁查詢的使用方法

分頁查詢的使用方法沒有變化,仍然和Mybatis之前的版本一致,沒有變化

。 這裡簡單舉一個例子

Page page = new Page<> (pageNum,pageSize); //查詢第pageNum頁,每頁pageSize條資料//將分頁引數page作為Mybatis或Mybatis Plus的第一個引數傳入持久層函式,即可完成分頁查詢return mySystemMapper。selectUser(page, 其他引數 );