MyBatis之Mapper与动态代理简介说明
admin
2024-03-07 18:25:48

转自:

MyBatis之Mapper与动态代理简介说明

下文笔者讲述mybatis的动态代理简介说明,如下所示

动态代理

代理是一种设计模式
一个类A,设计一个拥有同样接口的代理类P
负责为A进行统一的预处理、过滤、事后处理等

例:

interface Base {void work1();void work2();
}
class A implements Base {public void work1() { System.out.println("work1"); }public void work2() { System.out.println("work2"); }
}class P extends A {public void work1() {long start = new Date().getTime();try {super.work1();} finally {long end = new Date().getTime();System.out.println(end-start);}}public void work2() {.....}
}

当我们需为某一个方法扩展功能时,我们只需编写一个代理类,即可扩展其功能

public class MyProxy implements InvocationHandler {  private Object target;  public Object bind(Object target) {  this.target = target;return Proxy.newProxyInstance(target.getClass().getClassLoader(),  target.getClass().getInterfaces(), this);}  @Override  public Object invoke(Object proxy, Method method, Object[] args)  throws Throwable {  System.out.println("begin");try {return method.invoke(target, args);  } finally {System.out.println("end");}}  public static void main(String[] args) {  MyProxy proxy = new MyProxy();  Base x = (Base) proxy.bind(new A());  x.work1();  }  
}  

Mapper与动态代理

 
public class MapperProxy implements InvocationHandler {// 生成某个接口的mapperpublic static  T newInstance(Class clazz) {MapperProxy proxy = new MapperProxy<>();// 动态代理return (T) Proxy.newProxyInstance(clazz.getClassLoader(), new Class[] { clazz }, proxy);}// 调用mapper方法时实际执行的内容@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("invoke " + method.getName());return null;}
}拥有一个newInstance方法
来生成一个指定的mapper
实现了invoke方法
指定在调用mapper方法时执行的事情public static void main(String args[]) throws Exception {ArticleMapper mapper = MapperProxy.newInstance(ArticleMapper.class);mapper.findById(888);
} 

相关内容

热门资讯

如... 微信小程序的出现,为各行各业的商家解决了各种场景下的问题,尤其是生活服务小程序。 方便快捷的功能应用...
解... “为什么顾客在店门口来回走动,却不进来?”“为什么折扣这么低,顾客还愿意在隔壁排队等候?”“我的产品...
美... 美国再次以所谓“国家安全关切”为由对中国发起攻击。 据路透社21日报道,当地时间周四,美国交通部长皮...
公园里的私家菜地“藏不住”了 转自:贵州日报 本报讯(记者 潘晓飞)“天眼问政”栏目近日报道的黔东南州凯里市金泉湖公园藏有私家菜地...
四川蜡梅今年“卷”价格 □四川日报全媒体记者 陈秋吉析因  ●今年蜡梅产量比去年多,导致商户们“卷”起了价格,难以卖出好价 ...