手敲Mybatis(二)-Mapper的XML解析自动注册使用

上一章节实现了mapper注册器来将代理类进行注册,获取等,在测试时手动给与注册路径进行一系列操作,这章节采用自动注册方式,通过MapperFactoryBuilder进行解析xml的select标签、Sql、id、namespace等,解析完毕注册到MapperRegistry中,接下来就还是和上节一样的操作,代理对象使用及调用映射到自己需要调用的方法中

1.xml类图

1.SqlSessionFactoryBuilder

这次测试的入口,通过构建build方法调用XMLConfiBuilder调用解析方法(将配置存储到Configuration)中,将得到的配置类以构造函数的方式传入DefaultSqlSessionFactory这样整个流程就都能走下去了

2.XMLConfiBuilder

此类初始化Configuration类,并处理XML的解析方法

3.MappedStatement

解析出来的xml配置数据需要存储个地方,所以就存储此类里,此类里有个内部类Builder,用来构建构造函数将数据存储,build的目的也是能够返回此存储完毕的MappedStatement对象

4.SqlCommonType

Sql命令类型,是个枚举类,存储了insert、select、等标签用于比对时使用

5.Configuration

此类为配置类,主要对MappedStatement的容器存储和MapperRegistry的注册和获取封装,这样其他使用者不用实例化MappedStatement和MapperRegistry,直接使用Configuration就可以了获取到两个对象。

2.工程目录

├─src
│  ├─main
│  │  └─java
│  │      └─df
│  │          └─middleware
│  │              └─mybatis
│  │                  │  MybatisApplication.java
│  │                  │  
│  │                  ├─binding
│  │                  │      MapperMethod.java
│  │                  │      MapperProxy.java
│  │                  │      MapperProxyFactory.java
│  │                  │      MapperRegistry.java
│  │                  │      
│  │                  ├─builder
│  │                  │  │  BaseBuilder.java
│  │                  │  │  
│  │                  │  └─xml
│  │                  │          XMLConfigBuilder.java
│  │                  │          
│  │                  ├─io
│  │                  │      Resources.java
│  │                  │      
│  │                  ├─mapping
│  │                  │      MappedStatement.java
│  │                  │      SqlCommandType.java
│  │                  │      
│  │                  ├─session
│  │                  │  │  Configuration.java
│  │                  │  │  DefaultSqlSession.java
│  │                  │  │  SqlSession.java
│  │                  │  │  SqlSessionFactory.java
│  │                  │  │  SqlSessionFactoryBuilder.java
│  │                  │  │  
│  │                  │  └─defaults
│  │                  │          DefaultSqlSessionFactory.java
│  │                  │          
│  │                  └─type
│  │                          TypeAliasRegistry.java
│  │                          
│  └─test
│      ├─java
│      │  └─df
│      │      └─middleware
│      │          └─mybatis
│      │              │  MybatisApplicationTests.java
│      │              │  
│      │              ├─dao
│      │              │      IUserDao.java
│      │              │      TestAop.java
│      │              │      
│      │              └─po
│      │                      User.java
│      │                      
│      └─resources
│          │  mybatis-config-datasource.xml
│          │  
│          └─mapper
│                  User_Mapper.xml

3.代码实现

SqlSessionFactoryBuilder:通过build方法调用解析XML方法并最终得到SqlSessionFctoy对象

// mybatis的入口
public class SqlSessionFactoryBuilder {

    public SqlSessionFactory build(Reader reader) {
        XMLConfigBuilder xmlConfigBuilder = new XMLConfigBuilder(reader);
        return build(xmlConfigBuilder.parse());
    }

    public SqlSessionFactory 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值