主要功能
负责将指定目录下的Mapper.xml文件解析成对应的ResultMap、ResultType、Statement等。
源码解析
这里以springboot方式集成mybatis进行源码解析
1.通过springboot spi机制,加载spring.factories文件
自动加载MybatisAutoConfiguration类
2.我们来看下这个类做了什么
首先加载配置文件MybatisProperties,以下只保留核心属性,例如Mapper文件的路径以及java类型别名包名等。
@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)
public class MybatisProperties {
public static final String MYBATIS_PREFIX = "mybatis";
/**
* Mapper文件路径
*/
private String[] mapperLocations;
/**
* java类型别名包名
*/
private String typeAliasesPackage;
3.实例化SqlSessionFactory类,内部通过SqlSessionFactoryBean的getObject方法注入容器
以上会将配置文件中的属性设置到SqlSessionFactoryBean的属性中
调用FactoryBean的getObject()方法进行实例化操作,需要读者了解FactoryBean的用法。
该方法会调用buildSqlSessionFactory进行工厂创建
根据配置文件中设置的MapperLocation进行xml解析