MyBatis 提供的插件机制是什么?

MyBatis 提供的插件机制允许我们在 SQL 被执行的过程中监听并做相应处理,主要解决以下问题:

  • 审计 SQL 语句及参数。
  • 为 SQL 添加分页、缓存、参数绑定等功能。

MyBatis 插件机制主要步骤:

  1. 实现 Interceptor 接口。
public interface Interceptor {
  Object intercept(Invocation invocation) throws Throwable;
}
  1. 在 mybatis-config.xml 中注册插件。
<plugins>
  <plugin interceptor="com.mybatis.plugin.MyInterceptor">
  </plugin>
</plugins>
  1. 在插件类中实现方法。
public Object intercept(Invocation invocation) throws Throwable {
  // 执行原始的方法  
  Object returnValue = invocation.proceed();
  // 额外的处理逻辑
  return returnValue;
}
  1. 通过 Invocation 对象获得 SQL、参数等信息。
  2. 并对 SQL 进行改写后再执行。
    MyBatis 支持 8 个插件点:
  • interceptor:SQL 执行前后
  • executor:SQL 执行前后的事务处理
  • statementHandler:参数处理及结果集映射

因此,插件机制可以:

  • 非侵入的改写 SQL 和参数
  • 在 SQL 执行的生命周期的不同阶段侦听事件