要自定義 MyBatis 的攔截器插件,需要實現 Interceptor 接口,并重寫其 intercept 方法和 plugin 方法。以下是一個簡單的示例代碼:
public class CustomInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
// 在方法執行前做一些操作
System.out.println("CustomInterceptor: before method execution");
// 調用目標方法
Object result = invocation.proceed();
// 在方法執行后做一些操作
System.out.println("CustomInterceptor: after method execution");
return result;
}
@Override
public Object plugin(Object target) {
// 使用 Plugin 工具類包裝自定義攔截器
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
// 設置攔截器的屬性值
}
}
<configuration>
<plugins>
<plugin interceptor="com.example.CustomInterceptor">
<!-- 在這里可以添加攔截器的屬性配置 -->
</plugin>
</plugins>
</configuration>
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
sqlSessionFactory.getConfiguration().addInterceptor(new CustomInterceptor());
這樣就可以自定義 MyBatis 的攔截器插件了。在 CustomInterceptor 類的 intercept 方法中可以編寫自己的攔截邏輯,例如在方法執行前后打印日志、對參數進行處理等。