Mybatis构建SqlSessionFactory流程
2022-03-23 17:18:33 4 举报
mybatis构建SqlSession流程
作者其他创作
大纲/内容
resultMapElements
XMLConfigBuilder
settingsElement
XMLMapperBuilder
environmentsElement
MapperBuilderAssistant
parse
pluginElement
一、SqlSessionFactoryBuilder: 1、构建一个XMLConfigBuilder对象parser,传入配置信息。 2、调用build方法,传入parser.parse()返回的Configuration对象,build返回的是SqlSessionFactory接口的实现类DefaultSqlSessionFactory,最终构造出SqlSessionFactory对象并返回。
parameterMapElement
propertiesElement
ObjectWrapperFactoryElement
三、XMLMapperBuilder: 1、XPathParser将mapper配置文件解析成Document对象后封装到XPathParser对象,再将XPathParser对象作为参数传给XMLMapperBuilder构造方法构造出一个XMLMapperBuilder对象。 2、调用parse()方法,parse()方法调用configurationElement方法进行解析mapper映射文件。该方法对每个标签逐一解析并保存到Configuration和MapperBuilderAssistant对象中。 3、调用MapperBuilderAssistant对象的bindMapperForNamespace方法把namespace属性保存到里面,以便其他方法使用。 4、调用buildStatementFromContext方法,这个方法创建了XMLStatementBuilder对象并调用了它parseStatementNode方法来完成解析。
SqlSessionFactoryBuilder
buildStatementFromContext
loadCustomVfs
build
reflectorFactoryElement
XMLStatementBuilder
typeHandlerElement
parseConfiguracion
bindMapperForNamespace
sqlElement
configurationElement
statementBuilder.build()
mapperElement
parseStatementNode
cacheElement
四、XMLStatementBuilder: 1、parseStatementNode方法解析mapper文件中各个节点并进行封装,其中sql语句封装到了SqlSource对象中,SqlSource是个接口,如果是动态sql就创建DynamicSqlSource实现类,否则就创建StaticSqlSource实现类。 2、调用MapperBuilderAssistant的addMappedStatement方法,把封装好的各个节点对象作为参数传入。
五、MapperBuilderAssistant 1、MapperBuilderAssistant拿到XMLStatementBuilder传入的节点配置信息调用addMappedStatement方法通过这些配置信息通过MappedStatement的Builder方法创建出一个statementBuilder对象。 2、调用getStatementParameterMap方法拿到statementParameterMap对象传入statementBuilder对象的parameterMap方法。 3、statementBuilder调用build方法得到MappedStatement对象。 4、把MappedStatement对象(对应每个增删改查节点)放入Configuration对象的mappedStatements容器中,得到了最终的Configuration对象,即为第一步中SqlSessionFactoryBuilder构造方法中需要的Configuration对象。
typeAliaseElement
objectFactoryElement
addMappedStatement
databaseldProviderElement
cacheRefElement
init
0 条评论
下一页