接下来就可以写创建代理对象的方法了
类加载器,代理谁,就用谁的加载器,因为这里用daoInterfaceClass.getClassLoader()

第二个代理谁就要和谁有相同的接口,daoInterfaceClass本身就是一个接口,这里创建一个类的数组把daoInterfaceClass传进去。

如何代理呢?需要写一个自己的代理方式。MapperProxy这个类是没有的。

创建MapperProxy
实现接口InvocationHandler

重写invoke方法

这里把Mapper对象传递过来。

代理类的实现里面。定义Mappers然后通过构造函数去接收。

此时可以执行sql语句了
declare
美 [dɪ'kler]
英 [dɪ'kleə(r)]
- v.声明;宣布;声称;断言
- 网络宣告;数组声明;宣告行为

通过key获取到mapper对象。

这是一个runntime异常。

复制提供的工具类

放到我们的utils包下面。


改下报名,里面就是执行selectList方法。

导入Mapper的包。

工具类需要传递一个Connection参数

这里定义conn。通过构造函数传递进来。

DefaultSqlSession里面 需要高一个conn对象。传过去。但是这里目前还没有。我们还要再close方法里面是放Connection

在构造函数内赋值,把cfg这个对象传递过去

clsoe方法用try catch捕获异常。并判断是否为null

新建类DataSourceUtil
用户创建数据源的工具类。


直接return 创建好的Connection对象。

修正一个地方
下面用到putAll方法,上面就必须先new一个空的对象出来。

测试


最终的结构

查询所有最终就调用工具类

其实就是两件事,1创建代理对象 2实现查询所有。