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

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

  1. Unit07: MyBatis框架简介 、 MyBatis基本应用

    Unit07: MyBatis框架简介 . MyBatis基本应用 1. myBatis (1)myBatis是什么? 是一个开源的持久层框架. 注:myBatis底层仍然是jdbc. (2)编程步骤 ...

  2. idea插件(mybatis框架下mapper接口快速跳转对应xml文件)亲测好用!

    我相信目前在绝大部分公司里,主要使用的框架是S(spring)S(spring MVC)M(mybatis),其中mybatis总体架构是编写mapper接口,框架扫描其对应的mapper.xml文件 ...

  3. 阶段3 1.Mybatis_03.自定义Mybatis框架_3.自定义mybatis的编码-根据测试类中缺少的创建接口和类

    先认识一下这几个类.Resources是一个class SqlSessionFactoryBuilder 创建新项目 复制相关的依赖 复制之前的代码 复制到当前项目的src下 把Mybits的依赖删除 ...

  4. 阶段3 1.Mybatis_03.自定义Mybatis框架_7.自定义Mybatis的编码-实现基于注解配置的查询所有

    注解的方式,这里进行修改.上面注释的是原来xml的方式. 在dao类里面加上注解 创建注解类 声明注解的生命周期为Runntime 改变注解出现的位置,在Mehtod方法上 写完之后这里就不报错了. ...

  5. 阶段3 1.Mybatis_03.自定义Mybatis框架_5.自定义Mybatis的编码-创建两个默认实现类并分析类之间的关系

    把XMLConfigBuilder的包名补全 这样我们就可以调用里面的loadConfiguration方法了 创建工厂实现类 实现SqlSessionFactory的接口 实现接口里面的方法 把cf ...

  6. 阶段3 1.Mybatis_03.自定义Mybatis框架_4.自定义mybatis的编码-解析XML的工具类介绍

    导入xml操作的类和用到的相关包 创建util包,然后把提供好的XMLConfigBuilder.java文件复制3过来 复制过来,里面用到了很多dom4j的东西 打开pom.xml 输入depend ...

  7. 阶段3 1.Mybatis_03.自定义Mybatis框架_2.自定义Mybatis的分析-创建代理对象的分析

    如何创建代理对象,以及使用设计模式带来的优势 调用的组合关系 不关注的,执行JDBC那一套.第二个是解析XML,解析的技术有很多.

  8. 阶段3 1.Mybatis_03.自定义Mybatis框架_1.自定义Mybatis的分析-执行查询所有分析

  9. Mybatis框架学习总结-Mybatis框架搭建和使用

    Mybatis介绍 Mybatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架.Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.Mybatis可以使 ...

随机推荐

  1. 安卓的几种alert对话框

    @Override public void onClick(View v) { switch (v.getId()) { case R.id.d1: AlertDialog.Builder build ...

  2. nodejs fs copy本地文件src dst

    1. // fs.writeFileSync(pathNewFile, fs.readFileSync(fileName)); 2.   fs.createReadStream(fileName).p ...

  3. C++线程同步 -- windows

    简介: 在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程.但是多个线程同时运行的时候可能调用线程函数,在多个线程同时对同一个内存地址进行写入, 由于CPU时间调度上的问题,写入 ...

  4. 如何通过Samba共享Linux文件夹

    https://blog.csdn.net/stu059074244/article/details/77766155   Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Window ...

  5. TDD之断言验证System.out.print输出

    业务类: public class OutDemo { public void print(String content) { System.out.print(content); } } 测试类: ...

  6. Python之网络编程之并发编程的IO模型,

    了解新知识之前需要知道的一些知识 同步(synchronous):一个进程在执行某个任务时,另外一个进程必须等待其执行完毕,才能继续执行 #所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调 ...

  7. oracle基本语句(第七章、数据库逻辑对象管理)

    索引.实体化视图.簇.散列簇.序列.同义词 1.创建表 CREATE TABLE <表名>(<列名1> <数据类型>,……); CREATE GLOBAL TEMP ...

  8. lazarus 连接mysql5.7 (deepin linux)

    在mysql下载站点下载驱动文件:libmysqlclient20_5.7.28-1debian9_amd64        64位 ,1.5M 安装后,lazarus IDE 就可以直接连MYSQL ...

  9. BZOJ 3193: [JLOI2013]地形生成 计数 + 组合 + 动态规划

    第一问: 先不考虑山的高度有相同的:直接按照高度降序排序,试着将每一座山插入到前面山的缝隙中. 当然,这并不代表这些山的相对位置是固定的,因为后面高度更低的山是有机会插入进来的,所以就可以做到将所有情 ...

  10. 2018百度之星初赛B轮 p1m2

    p1m2 Accepts: 954 Submissions: 4063 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/1310 ...