該插件是核心插件,目前代理了 ?Executor#query
? 和 ?Executor#update
? 和 ?StatementHandler#prepare
? 方法
private List interceptors = new ArrayList<>();
?我們提供的插件都將基于此接口來實現(xiàn)功能
目前已有的功能:
PaginationInnerInterceptor
?TenantLineInnerInterceptor
?DynamicTableNameInnerInterceptor
?OptimisticLockerInnerInterceptor
?IllegalSQLInnerInterceptor
?BlockAttackInnerInterceptor
?注意:
使用多個功能需要注意順序關(guān)系,建議使用如下順序
總結(jié): 對 sql 進行單次改造的優(yōu)先放入,不對 sql 進行改造的最后放入
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<!-- 其他屬性 略 -->
<property name="configuration" ref="configuration"/>
<property name="plugins">
<array>
<ref bean="mybatisPlusInterceptor"/>
</array>
</property>
</bean>
<bean id="configuration" class="com.baomidou.mybatisplus.core.MybatisConfiguration">
<!-- 需配置該值為false,避免1或2級緩存可能出現(xiàn)問題,該屬性會在舊插件移除后一同移除 -->
<property name="useDeprecatedExecutor" value="false"/>
</bean>
<bean id="mybatisPlusInterceptor" class="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
<property name="interceptors">
<list>
<ref bean="paginationInnerInterceptor"/>
</list>
</property>
</bean>
<bean id="paginationInnerInterceptor" class="com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor">
<!-- 對于單一數(shù)據(jù)庫類型來說,都建議配置該值,避免每次分頁都去抓取數(shù)據(jù)庫類型 -->
<constructor-arg name="dbType" value="H2"/>
</bean>
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
/**
* 新的分頁插件,一緩和二緩遵循mybatis的規(guī)則,需要設(shè)置 MybatisConfiguration#useDeprecatedExecutor = false 避免緩存出現(xiàn)問題(該屬性會在舊插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
<plugins>
<plugin interceptor="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
<property name="@page" value="com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor"/>
<property name="page:dbType" value="h2"/>
</plugin>
</plugins>
?property
的配置說明詳見 ?MybatisPlusInterceptor#setProperties
? 的源碼方法注釋
屬性名 | 類型 | 默認值 | 描述 |
tenantLine | String | "" | 行級租戶 |
dynamicTableName | String | "" | 動態(tài)表名 |
blockAttack | String | "" | 攻擊 SQL 阻斷解析器,防止全表更新與刪除 |
illegalSql | String | "" | 垃圾 SQL 攔截 |
該注解作用于 ?xxMapper.java
? 方法之上 各屬性代表對應(yīng)的插件 各屬性不給值則默認為 ?false
設(shè)置為 ?true
忽略攔截 更多說明詳見源碼注釋
更多建議: