Mybatis 配置文件解析
2023-02-22 15:41:03 5 举报
Mybatis 配置文件解析流源码程图
作者其他创作
大纲/内容
二级缓存结构
设置别名typeAliasesElement(root.evalNode(\"typeAliases\"));
添加插件configuration.addInterceptor(interceptorInstance);
解析环境配置节点,事务管理器、数据源environmentsElement(root.evalNode(\"environments\"));
configuration.setVfsImpl(vfsImpl);configuration.setLogImpl(logImpl);
loadXmlResource();
Mapper节点解析,这里面还会进行Mapper映射文件的解析,四种配置映射文件的方式mapperElement(root.evalNode(\"mappers\"));
xmlParser.parse();
解析Mybatis配置parser.parse()
全部添加到configuration中configuration.addMappedStatement(statement);
Mybaits对配置文件的解析SqlSessionFactory sqlSessionFactory = builder.build(mybatisStream);
configuration.setDatabaseId(databaseId);
Mapper配置文件解析parser.parse();
解析插件pluginElement(root.evalNode(\"plugins\"));
configuration.setEnvironment(environmentBuilder.build());
解析数据库厂商IddatabaseIdProviderElement(root.evalNode(\"databaseIdProvider\"));
解析propertiespropertiesElement(root.evalNode(\"properties\"));
解析Mapper节点configurationElement(parser.evalNode(\"/mapper\"));
使用Mybatis操作数据库步骤:1.需要配置mybaits的核心配置文件2.Mapper接口+Mapper映射文件3.创建SqlSessionFactory4. 建立SqlSession5.使用SqlSession进行数据库的crud操作
添加默认设置settingsElement(settings);
解析configuration节点parseConfiguration(parser.evalNode(\"/configuration\"));
parse()
解析CRUD SQL语句buildStatementFromContext(context.evalNodes(\"select|insert|update|delete\"));
解析工厂objectFactoryElement(root.evalNode(\"objectFactory\")); objectWrapperFactoryElement(root.evalNode(\"objectWrapperFactory\")); reflectorFactoryElement(root.evalNode(\"reflectorFactory\"));
configuration.setVariables(defaults);
解析resultMapresultMapElements(context.evalNodes(\"/mapper/resultMap\"));
设置二级缓存cacheElement(context.evalNode(\"cache\"));
configuration.setObjectFactory(factory);
解析类型转换器typeHandlerElement(root.evalNode(\"typeHandlers\"));
创建使用configuration创建SqlSessionFactoryreturn new DefaultSqlSessionFactory(config);
build
解析setting节点Properties settings = settingsAsProperties(root.evalNode(\"settings\"));loadCustomVfs(settings);日志实现 loadCustomLogImpl(settings);
return build(parser.parse());
解析SQL节点sqlElement(context.evalNodes(\"/mapper/sql\"));
解析命名空间context.getStringAttribute(\"namespace\");
解析parameterMapparameterMapElement(context.evalNodes(\"/mapper/parameterMap\"));
0 条评论
下一页