阶段3 1.Mybatis_03.自定义Mybatis框架_6.自定义Mybatis的编码-实现基于XML的查询所有操作

接下来就可以写创建代理对象的方法了
类加载器,代理谁,就用谁的加载器,因为这里用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实现查询所有。


 

原文地址:https://www.cnblogs.com/wangjunwei/p/11300299.html