mybatis plugin 和动态代理
网上很多说这个设计的了,我就直接写代码吧, 你可以吧简单的封装单表操作逻辑放在里面, 直接解决写一大堆xml 的问题。
public class ExamplePlugin implements Interceptor {
/**
* 是实现拦截逻辑的地方,内部要通过invocation.proceed()显式地推进责任链前进,也就是调用下一个拦截器拦截目标方法。
* @param invocation
* @return
* @throws Throwable
*/
@Override
public Object intercept(Invocation invocation) throws Throwable {
Object[] objects = invocation.getArgs();
MappedStatement ms = (MappedStatement) objects[0];
String msId = ms.getId();
System.out.println(msId);
return invocation.proceed();
}
/**
* Object plugin(Object target) 就是用当前这个拦截器生成对目标target的代理,实际是通过Plugin.wrap(target,this)
* 来完成的,把目标target和拦截器this传给了包装函数
* @param o
* @return
*/
@Override
public Object plugin(Object target) {
if (target instanceof Executor) {
return Plugin.wrap(target, this);
} else {
return target;
}
}
@Override
public void setProperties(Properties properties) {
}
}