优雅的利用Mybatis插件实现sql查询耗时统计
一. Mybatis反射机制讲解
二. 代理模式讲解
-
静态代理
-
动态代理
JDK动态代理参考代码
Proxy.newProxyInstance(xxx.getClass().getClassLoader(),
new Class[]{
Interface.class},
new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("1.买材料");
System.out.println("2.找工人");
System.out.println("3.开始装修");
Object invoke = method.invoke(target, args);
System.out.println("4.后期服务");
return invoke;
}
});
三、mybatis自定义插件实现
@Intercepts(
{
@Signature(type = Executor.class, method = "query", args = {
MappedStatement