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();
    }

    // 其他方法...
}
相关推荐
running up32 分钟前
MyBatis 核心知识点与实战
数据库·oracle·mybatis
落霞的思绪3 小时前
Mybatis读取PostGIS生成矢量瓦片实现大数据量图层的“快显”
linux·运维·mybatis·gis
自在极意功。10 小时前
MyBatis配置文件详解:environments、transactionManager与dataSource全面解析
java·数据库·tomcat·mybatis
苏小瀚12 小时前
[JavaEE] Spring IoC&DI
spring·java-ee·mybatis
星星不打輰1 天前
SSM项目--SweetHouse 甜蜜蛋糕屋
java·spring·mybatis·ssm·springmvc
代码栈上的思考1 天前
MyBatis:注解方式实现数据库 CRUD 全操作
java·开发语言·mybatis
꒰ঌ 安卓开发໒꒱1 天前
一个参数引发的“插入成功却返回 -2147482646”:深入解析 MyBatis 批处理模式陷阱与高性能批量更新方案
mybatis
总会落叶1 天前
MyBatis XML映射配置与日志系统全解析
xml·tomcat·mybatis
2024暴富2 天前
SpringBoot基于Mybatis拦截器实现数据权限(图文)
spring boot·spring cloud·mybatis
Billow_lamb2 天前
MyBatis Plus 中常用的插件列表
java·mybatis