该插件是核心插件,目前代理了 Executor#query
和 Executor#update
和 StatementHandler#prepare
方法
private List interceptors = new ArrayList<>();
我们提供的插件都将基于此接口来实现功能
目前已有的功能:
PaginationInnerInterceptor
TenantLineInnerInterceptor
DynamicTableNameInnerInterceptor
OptimisticLockerInnerInterceptor
IllegalSQLInnerInterceptor
BlockAttackInnerInterceptor
注意:
使用多个功能需要注意顺序关系,建议使用如下顺序
总结: 对 sql 进行单次改造的优先放入,不对 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级缓存可能出现问题,该属性会在旧插件移除后一同移除 -->
<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">
<!-- 对于单一数据库类型来说,都建议配置该值,避免每次分页都去抓取数据库类型 -->
<constructor-arg name="dbType" value="H2"/>
</bean>
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
@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 | "" | 动态表名 |
blockAttack | String | "" | 攻击 SQL 阻断解析器,防止全表更新与删除 |
illegalSql | String | "" | 垃圾 SQL 拦截 |
该注解作用于 xxMapper.java
方法之上 各属性代表对应的插件 各属性不给值则默认为 false
设置为 true
忽略拦截 更多说明详见源码注释
resultMap元素是MyBatis中最重要最强大的元素。它可以让你从90%的JDBCResultSets数据提取代码中解放出来,并在一些情形下...
映射类型当你准备一个 Hibernate 映射文件时,我们已经看到你把 Java 数据类型映射到了 RDBMS 数据格式。在映射文件中已经声明被...
一、运行环境: 1、操作系统:windows 10 x64 2、eclipse版本: Version: 2019-06 (4.12.0) Build id: 20190614-1200 3、Web服务...
让我们使用 Spring 框架开始实际的编程。在你开始使用 Spring 框架编写第一个例子之前,你必须确保已经正确地设置了 Spring 环境...
Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系。 什么是依赖注入每个基于应用程序的 java 都有几个...
Spring 中基于 AOP 的 XML架构为了在本节的描述中使用 aop 命名空间标签,你需要导入 spring-aop 架构,如下所述:?xml version=...
ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。为了方便大家理解,我们将ServletContext和Co...
Array函数Array函数允许你在代码执行中间创建一个数组,而不必事先确定其大小。该函数总是返回一个Varant数组。使用函数Array你...