

public <T>T getMapper(Class clazz){//创建代理对象// ClassLoader 需要被代理的类[] 做哪一件事情(方法)ClassLoader loader = clazz.getClassLoader();Class[] classes = new Class[]{clazz};InvocationHandler handler = new InvocationHandler() {//这个invoke方法相当于是代理对象的真正执行方法public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("我是代理执行的方法");System.out.println("代理对象"+proxy.getClass().getName());System.out.println("代理对象代替真实对象做的方法"+method.getName());System.out.println("代理对象接收到真实对象的参数"+args[0]);//insert("sqlid",student);return proxy;}};Object obj = Proxy.newProxyInstance(loader,classes,handler);//代理对象(原来Dao接口的子类)//做一个造型T t = (T)obj;//造型以后的代理对象返回出去//代理对象是传递进来参数Class类型的子类对象return t;}
