org.apache.ibatis.plugin.Interceptor 接口是 MyBatis 插件体系的核心。它的主要作用是允许开发者在不修改 MyBatis 源代码的情况下,拦截并介入 MyBatis 核心组件(如 Executor、StatementHandler 等)的方法执行过程,从而添加自定义逻辑或修改其默认行为。
我们可以将 Interceptor 理解为一个切面 (Aspect),它能够在 MyBatis 执行 SQL 的关键路径上插入自定义的处理代码。
Interceptor 接口的核心作用包括:
- 拦截方法调用: 捕获对 MyBatis 核心组件特定方法的调用。
- 执行自定义逻辑: 在被拦截方法执行之前、之后或完全替代原始方法执行自定义代码(例如记录日志、性能监控、参数修改、结果修改、分页处理、数据脱敏、权限控制等)。
- 修改行为: 可以改变原始方法的参数或返回值。
- 控制流程: 可以决定是否继续执行原始方法(通过调用
invocation.proceed())。 - 链式处理: 支持多个插件按照配置顺序形成责任链,依次处理同一个拦截点。
Interceptor 接口提供了哪些拦截点?
MyBatis 并非允许拦截所有内部方法,而是预定义了四个核心接口的特定方法作为稳定且推荐的拦截点。开发者通过 @Intercepts 和 @Signature 注解来声明希望拦截的具体方法签名。这四个核心接口分别是:

最低0.47元/天 解锁文章
440

被折叠的 条评论
为什么被折叠?



