在 Mybatis Plus 中實現 SQL 攔截器可以按照以下步驟進行操作:
Interceptor
接口的攔截器類,例如 MySqlInterceptor
。public class MySqlInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
// 攔截 SQL 執行前的操作
// ...
// 調用原始的方法
Object result = invocation.proceed();
// 攔截 SQL 執行后的操作
// ...
return result;
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
// 設置攔截器的屬性
// ...
}
}
mybatis-plus-config.xml
中配置攔截器。<configuration>
<interceptors>
<interceptor>
<typeHandlers>
<typeHandler handler="com.example.MySqlInterceptor"/>
</typeHandlers>
</interceptor>
</interceptors>
</configuration>
@Configuration
@MapperScan("com.example.mapper")
public class MybatisPlusConfig {
@Bean
public Interceptor mySqlInterceptor() {
return new MySqlInterceptor();
}
@Autowired
private Interceptor mySqlInterceptor;
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(mySqlInterceptor);
return interceptor;
}
}
這樣,MySqlInterceptor
就會攔截在 Mybatis Plus 中執行的 SQL 操作。你可以在 intercept
方法中實現具體的攔截邏輯,例如記錄 SQL 執行時間、修改 SQL 條件等。