springboot整合mybatis,mybatis的拦截器不能使用
springboot整合mybatis,mybatis的拦截器不能使用,没用springboot的时候,直接在mybatis的配置文件里面添加个 plugin 就可以,换了springboot,mybatis的配置文件没有了,不知道怎么注册拦截器了。
以前mybatis配置文件配置如下:
<plugins>
<plugin interceptor="com.utstar.bi.interceptors.SqlInterceptorCount"></plugin>
</plugins>
springboot的拦截器如下:
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { MappedStatement.class, Object.class }) })
//@Service 启动报错
//@Component 启动报错
public class SqlInterceptorCount implements Interceptor {
private Logger log = LoggerFactory.getLogger(SqlInterceptorCount.class);
private static final ObjectFactory DEFAULT_OBJECT_FACTORY = new DefaultObjectFactory();
private static final ObjectWrapperFactory DEFAULT_OBJECT_WRAPPER_FACTORY = new DefaultObjectWrapperFactory();
private static final ReflectorFactory DEFAULT_REFLECTOR_FACTORY = new DefaultReflectorFactory();
@Override
public Object intercept(Invocation invocation) throws Throwable {
StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
MetaObject metaStatementHandler = MetaObject.forObject(statementHandler, DEFAULT_OBJECT_FACTORY,
DEFAULT_OBJECT_WRAPPER_FACTORY,DEFAULT_REFLECTOR_FACTORY);
MappedStatement mappedStatement = (MappedStatement) metaStatementHandler.getValue("delegate.mappedStatement");
HashMap mapParam = (HashMap) metaStatementHandler.getValue("delegate.boundSql.parameterObject");
.
.
.
}catch (Exception e){
// e.printStackTrace();
}
// 继续执行拦截之前的操作
return invocation.proceed();
}
@Override
public Object plugin(Object o) {
return null;
}
@Override
public void setProperties(Properties properties) {
}
}
跪求各位路过的大神指点,谢谢大家