Mybatis配置文件加载源码分析
2020-06-13 22:32:56 14 举报
Mybatis配置文件加载源码分析
作者其他创作
大纲/内容
第一次获取顶级结点-configuration标签
parseStatement(method)
创建MapperStatementBuilder
afterPropertiesSet()
MappedStatement.Builder statementBuilder = new MappedStatement.Builder()
xmlConfigBuilder.parse()
放入Configutation类中的map容器中
解析configuration结点下的所有子结点,获取每个结点的值,往configuration对应的bean中塞值。关键点,mappes结点下设置的mapper路径,使用XMLMapperBuilder解析mapper
Spring集成Mybatis配置SpringSessionFactoryBean工厂类
添加标志,在MapperAnnotaionBuilder中解析时,判断是否已经加载了xml
configuration.addMapper(boundType)
Spring集成Mybatis配置SpringSessionFactoryBean工厂类配置mybatis-config.xml,以此为入口分析加载过程
bindMapperForNamespace()
configuration>sqlSessionFatory
2. 关联mapper.xml和namespace对应的接口
解析xml配置
buildStatementFromContext(context.evalNodes(\"select|insert|update|delete\"))
statementParser.parseStatementNode()
这个方法构建SqlSessionFactory,在解析配置类之前如果sqlSessionFactory的一些配置字段有值会先将该值塞进configruation中,再解析配置文件时,可能会覆盖之前的配置
mapperRegistry存放mapper
configuration.addMappedStatement(statement)
mapperRegistry.addMapper(type)
XMLStatementBuilder---解析select,insert,update,delete标签的属性
构建MapperStatement
mapperParser.parse()
configuration.addLoadedResource(\"namespace:\" + namespace)
parseConfiguration(parser.evalNode(\"/configuration\"))
往配置类中加入mapper
InitializingBean
configurationElement(parser.evalNode(\"/mapper\"))
XMLStatementBuilder和MapperAnnotationBuilder最终将属性填充到MapperStatement中,先解析xml,后关联mapper和接口的时候解析接口中的annotation
this.sqlSessionFactory = buildSqlSessionFactory()
0 条评论
下一页