Could not find method on interface org.apache.ibatis.executor.Executor named query
报错情况
在使用mybatis plugin时报错
原代码如下:
@Intercepts({@Signature(
type= Executor.class,
method = "query",
args = {MappedStatement.class,
Object.class})})
public class MyPlugin implements Interceptor {
private Properties properties = new Properties();
public Object intercept(Invocation invocation) throws Throwable {
long startTime = System.currentTimeMillis();
Object result = invocation.proceed();
//打印耗时,根据properties读取耗时单位
System.out.println("耗时:" + (System.currentTimeMillis() - startTime) + properties.getProperty("timeConsume"));
return result;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
}
解决方法
根据上述代码可以看到type= Executor.class,这里根据不同的版本,需要的args 是不同的,点进Executor观察源码可以看到,当选择的method = "query"时,需要传入四个参数,如下图所示:
所以代码修改如下:
运行结果如下: