Mybatis 拦截器注册方式

在MyBatis中注册拦截器可以通过以下三种方式:
1. XML配置文件方式
在Mybatis的核心配置文件(mybatis-config.xml)中的标签下定义拦截器,并指定实现类。

xml 复制代码
<configuration>
    <!-- ...其他配置... -->
    <plugins>
        <plugin interceptor="com.example.MyInterceptor">
            <!-- 可以设置属性 -->
            <property name="propertyName" value="propertyValue"/>
        </plugin>
    </plugins>
</configuration>

2. Spring Boot自动配置方式
如果你的应用使用了Spring Boot和Mybatis-Spring-boot-starter,可以在Spring Bean配置类中通过@Configuration@Bean注解来注册拦截器。

java 复制代码
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.boot.autoconfigure.ConfigurationCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisConfig {

    @Bean
    public ConfigurationCustomizer mybatisConfigurationCustomizer() {
        return configuration -> {
            // 创建并添加拦截器实例到配置中
            configuration.addInterceptor(new MyInterceptor());
        };
    }
}

3. 注解式注册(适用于Spring环境)
如果你希望在Spring环境下更灵活地控制拦截器的作用范围,也可以利用@Intercepts和@Component注解来注册拦截器。

java 复制代码
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Plugin;
import org.apache.ibatis.plugin.Signature;
import org.springframework.stereotype.Component;

@Component
@Intercepts({ 
    @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),
    // 其他要拦截的方法...
})
public class MyInterceptor implements Interceptor {

    // 实现Interceptor接口方法
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        // 拦截逻辑...
        return invocation.proceed();
    }

    // 其他方法...
}
相关推荐
Java面试题总结1 天前
mybatis插件
java·tomcat·mybatis
Devin~Y2 天前
互联网大厂Java面试实战:Spring Boot、MyBatis、Redis、Kafka、JWT、Spring Cloud 与 AI 场景追问
java·spring boot·redis·spring cloud·kafka·mybatis·spring security
Ethan01072 天前
mybatis插件
mybatis
扎Zn了老Fe3 天前
MyBatis-Plus必知必会:告别低效CRUD,高效开发持久层
后端·mybatis
醉城夜风~3 天前
MyBatis 基础CRUD全套实战学习笔记
笔记·学习·mybatis
万亿少女的梦1683 天前
基于微信小程序、Spring Boot与Vue3的智慧养老管理系统设计与实现
spring boot·redis·微信小程序·mybatis·vue3
4154114 天前
MyBatis-Plus + PostGIS 实战(四):GeoJSON 序列化与前端地图对接,全局 WKT + 局部 GeoJSON,两种格式优雅共存
java·mybatis·postgis·geojson
Full Stack Developme4 天前
MyBatis-Plus(MP)AST 抽象语法树 设计原理
java·tomcat·mybatis
han_hanker5 天前
mybatis-plus service层拥有的方法
mybatis
SQL-First布道者5 天前
⚡ Spring JDBC 完整体系 · 第 3 讲 · Spring JDBC 最小案例
java·spring boot·后端·spring·mybatis·spring jdbc