1.TypeAliasRegistry
private final Map<String, Class<?>> TYPE_ALIASES = new HashMap<String, Class<?>>();
1.1)主要存储不同Java类型的别名的汇总
1.2)操作数据库的数据源事务管理器
1.3)操作数据库的连接池配置
1.4)Mybatis日志管理工具类
....
2.MapperRegistry
private final Map<Class<?>, MapperProxyFactory<?>> knownMappers
= new HashMap<Class<?>, MapperProxyFactory<?>>();
key值为 定义的*Mapper接口的类型,value值为*Mapper接口的动态代理类 MapperProxyFactory
2.1) 如果mybati-config.xml文件中mapper节点配置的是
<mapper resource="mapper/UserMapper.xml"/>
解析步骤:
2.1.1) 把*Mapper.xml中的信息封装到Configuration类中的属性mappedStatements容器中
2.1.2) 根据*Mapper文件中mapper的namespace属性的值,来初始化MapperRegistry类中
的knownMappers容器
2.2) 如果mybati-config.xml文件中mapper节点配置的是
<mapper class="com.roger.mybatis.mapper.UserMapper"/>
解析步骤:
2.2.1) 直接根据class属性的值,得到*Mapper接口的类型,然后初始化MapperRegistry类中
的knownMappers容器
2.2.2) 然后通过上面*Mapper的类型,得到接口的全路径名称 然后添后缀.xml拼接成*Mapper
接口对应的xml文件
2.2.3) 根据2.2.2得到的xml文件来解析封装到Configuration类中的属性mappedStatements容器中
3.MappedStatement
3.1) 资源文件路径 -- resouce ,就是在配置文件中通过xml文件来配置*Mapper的
3.2) namespace + 方法名 --> id
3.3) sql语句 -->sqlSource
3.4) sql查询的结果接映射成的java类型 resultMaps
3.5) sql语句命令类型SELECT,INSERT... --->sqlCommandType
4.MapperProxyFactory
4.1) *Mapper接口类型
4.2) Map<Method, MapperMethod> methodCache ; 容器key值是当前执行的方法的方法类型
5.MapperMethod
5.1) sql语句命令类型---SELECT,INSERT.... --->由MappedStatement类来构造
5.2) 方法签名 -->接口方法的返回类型,参数解析器等