阶段3 1.Mybatis_03.自定义Mybatis框架_4.自定义mybatis的编码-解析XML的工具类介绍
导入xml操作的类和用到的相关包
创建util包,然后把提供好的XMLConfigBuilder.java文件复制3过来

复制过来,里面用到了很多dom4j的东西

打开pom.xml

输入dependency.然后输入dom4j


这里用到的是dom4j的扩展内容,叫做xpath

用到xmpath就还需要导入包,jaxen

创建configuration
返回值是一个configuration。但是我们还没有这个


放到cfg的包下

我们把 configuration导进来。发现都是存放链接信息的

因为需要在configuration里面定义

生成他们的getter和setter方法
这样这里就都没有错误了

Mapper
后面还用到了Mapper的类

看我们之前的图,Mapper里面包含两部分。1是要执行的SQL语句 2是封装结果的实体类全限定类名

新建Mapper类。

然后生成getter和setter

读取XML的mapper
下面两段代码,一段是使用XML的,一段是使用注解的。

因为我们这里没有用到注解所以这里先注释掉
下面找到方法体 都注释掉

查看XML的主要代码,首先是找到mappers下面的mapper


mappers有可能是有多个mapper。因此这里进行遍历

取出了Resource的属性值。


判断resource的属性节点是否为null。如果不为null则表示使用的是XML的方式

把获取到的属性值传递到方法loadMapperConfiguration

loadMapperConfiguration方法
首先是定义了一个Mapper,方便查找。

解析xml找到select标签

找到的是这里的xml的select节点

找到xml后,取出id属性的值

最终形成的对象。

Mapppers属性
mapper值返回来后,通过setMappers方法传递进去。这里还缺少一个setMappers的方法

增加Configuration类里面属性 mappers

生成的getter和setter方法

这里的getter使用追加的方式

最后包的问题
红框选中都删除掉。

在注视这里

这样我们有了这个工具类就可以创建Factory了
阶段3 1.Mybatis_03.自定义Mybatis框架_4.自定义mybatis的编码-解析XML的工具类介绍的更多相关文章
- Unit07: MyBatis框架简介 、 MyBatis基本应用
Unit07: MyBatis框架简介 . MyBatis基本应用 1. myBatis (1)myBatis是什么? 是一个开源的持久层框架. 注:myBatis底层仍然是jdbc. (2)编程步骤 ...
- 阶段3 1.Mybatis_03.自定义Mybatis框架_3.自定义mybatis的编码-根据测试类中缺少的创建接口和类
先认识一下这几个类.Resources是一个class SqlSessionFactoryBuilder 创建新项目 复制相关的依赖 复制之前的代码 复制到当前项目的src下 把Mybits的依赖删除 ...
- 使用mybatis框架实现带条件查询-多条件(传入实体类)
在实际的项目开发中,使用mybatis框架查询的时候,不可能是只有一个条件的,大部分情况下是有多个条件的,那么多个条件应该怎样传入参数: 思考: 需求:根据用户姓名(模糊查询),和用户角色对用户表进 ...
- 阶段3 1.Mybatis_03.自定义Mybatis框架_7.自定义Mybatis的编码-实现基于注解配置的查询所有
注解的方式,这里进行修改.上面注释的是原来xml的方式. 在dao类里面加上注解 创建注解类 声明注解的生命周期为Runntime 改变注解出现的位置,在Mehtod方法上 写完之后这里就不报错了. ...
- 阶段3 1.Mybatis_03.自定义Mybatis框架_6.自定义Mybatis的编码-实现基于XML的查询所有操作
接下来就可以写创建代理对象的方法了 类加载器,代理谁,就用谁的加载器,因为这里用daoInterfaceClass.getClassLoader() 第二个代理谁就要和谁有相同的接口,daoInter ...
- 阶段3 1.Mybatis_03.自定义Mybatis框架_5.自定义Mybatis的编码-创建两个默认实现类并分析类之间的关系
把XMLConfigBuilder的包名补全 这样我们就可以调用里面的loadConfiguration方法了 创建工厂实现类 实现SqlSessionFactory的接口 实现接口里面的方法 把cf ...
- 阶段3 1.Mybatis_03.自定义Mybatis框架_2.自定义Mybatis的分析-创建代理对象的分析
如何创建代理对象,以及使用设计模式带来的优势 调用的组合关系 不关注的,执行JDBC那一套.第二个是解析XML,解析的技术有很多.
- 阶段3 1.Mybatis_03.自定义Mybatis框架_1.自定义Mybatis的分析-执行查询所有分析
- Mybatis框架学习总结-Mybatis框架搭建和使用
Mybatis介绍 Mybatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架.Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.Mybatis可以使 ...
随机推荐
- php实用小技巧【持续更新】
这是本人开始做项目的时候遇到过的问题还有解决方法 1.eval函数 能把字符串转换成可执行的php代码,如果字符串不是可执行的php代码的话,需要在前面加上@,屏蔽notice 2.array_mer ...
- 设备中LPC2368芯片个例参数问题导致故障的分析
最近公司的设备客户报告在终端客户那里出现了板卡加热不受控,出现了持续加热导致设备一些贵重部件损坏.由于历史上很多现场问题,板卡什么拆到别的地方搭复现平台,基本都是以失败告终,所以出差去现场分析. 过程 ...
- Linux下网络设置
1.临时IP配置 # ifconfig eth0 192.168.110.118 netmask 255.255.255.0 gateway 192.168.110.2 up # ...
- AD使用adsi 组件 获取域信息
// testadsi.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include "windows.h"#inclu ...
- C#WinFrom导出Excel
采用的是以DataGridView的形式导出,使用NPOI.dll 1.由于使用的是DataGridView,所以类需要创建在From的Project下,DLL导入NPOI 2.代码如下 using ...
- 创建一个jFinal项目
最近在做微信开发,于是用到了jfinal. 做一下解释: JFinal 是基于 Java 语言的极速 WEB + ORM 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩 ...
- ESP8266---TCP Client
ESP8266WiFi库里面还有其他重要内容,比如跟http相关的 WiFiClient.WiFiServer,跟https相关的 WiFiClientSecure.WiFiServerSecure ...
- app自动化的执行
appium --address 127.0.0.1 --port 10000 --bootstrap-port 10100 --webdriveragent-port 10110 在指定的目录下执行 ...
- 浏览器主页在不知情的情况下设置为duba.com和newduba.cn
原来是安装了“驱动精灵”. 真是个垃圾! 不通知用户的情况下,自动给锁定主页. 真TMD恶心 离倒闭不远了,现在只能通过这种方式来获取流量.
- CSS无图片三角形
border:6px solid #f2f2f2; border-color:#999 transparent transparent transparent; border-style:solid ...