怎么在网站做推广和宣传,建设厅资质管理网站,南昌专业做网站公司,做淘宝相关网站【Mybatis 系列10-结合源码解析mybatis 执行流程】 【Mybatis 系列9-强大的动态sql 语句】 【Mybatis 系列8-结合源码解析select、resultMap的用法】 【Mybatis 系列7-结合源码解析核心CRUD配置及用法】 【Mybatis 系列6-结合源码解析节点配置objectFactory、databaseIdProvid… 【Mybatis 系列10-结合源码解析mybatis 执行流程】 【Mybatis 系列9-强大的动态sql 语句】 【Mybatis 系列8-结合源码解析select、resultMap的用法】 【Mybatis 系列7-结合源码解析核心CRUD配置及用法】 【Mybatis 系列6-结合源码解析节点配置objectFactory、databaseIdProvider、plugins、mappers】 【Mybatis 系列5-结合源码解析TypeHandler】 【Mybatis 系列4-结合源码解析节点typeAliases】 【Mybatis 系列3-结合源码解析properties节点和environments节点】 【Mybatis 系列2-配置文件】 【Mybatis 系列1-环境搭建】 上篇文章 写了一个Demo简单体现了一下Mybatis的流程。 本次将简单介绍一下Mybatis的配置文件 上次例子中我们以 SqlSessionFactoryBuilder 去创建 SqlSessionFactory, 那么我们就先从SqlSessionFactoryBuilder入手 咱们先看看源码是怎么实现的 SqlSessionFactoryBuilder源码片段 1 public class SqlSessionFactoryBuilder {2 2 3 3 //Reader读取mybatis配置文件传入构造方法4 4 //除了Reader外其实还有对应的inputStream作为参数的构造方法5 5 //这也体现了mybatis配置的灵活性6 6 public SqlSessionFactory build(Reader reader) {7 7 return build(reader, null, null);8 8 }9 9
10 10 public SqlSessionFactory build(Reader reader, String environment) {
11 11 return build(reader, environment, null);
12 12 }
13 13
14 14 //mybatis配置文件 properties, 此时mybatis配置文件中可以不配置properties也能使用${}形式
15 15 public SqlSessionFactory build(Reader reader, Properties properties) {
16 16 return build(reader, null, properties);
17 17 }
18 18
19 19 //通过XMLConfigBuilder解析mybatis配置然后创建SqlSessionFactory对象
20 20 public SqlSessionFactory build(Reader reader, String environment, Properties properties) {
21 21 try {
22 22 XMLConfigBuilder parser new XMLConfigBuilder(reader, environment, properties);
23 23 //下面看看这个方法的源码
24 24 return build(parser.parse());
25 25 } catch (Exception e) {
26 26 throw ExceptionFactory.wrapException(Error building SqlSession., e);
27 27 } finally {
28 28 ErrorContext.instance().reset();
29 29 try {
30 30 reader.close();
31 31 } catch (IOException e) {
32 32 // Intentionally ignore. Prefer previous error.
33 33 }
34 34 }
35 35 }
36 36
37 37 public SqlSessionFactory build(Configuration config) {
38 38 return new DefaultSqlSessionFactory(config);
39 39 }
40 40
41 41 } 通过源码我们可以看到SqlSessionFactoryBuilder 通过XMLConfigBuilder 去解析我们传入的mybatis的配置文件 下面就接着看看 XMLConfigBuilder 部分源码 1 /**2 2 * mybatis 配置文件解析3 3 */4 4 public class XMLConfigBuilder extends BaseBuilder {5 5 public XMLConfigBuilder(InputStream inputStream, String environment, Properties props) {6 6 this(new XPathParser(inputStream, true, props, new XMLMapperEntityResolver()), environment, props);7 7 }8 8 9 9 private XMLConfigBuilder(XPathParser parser, String environment, Properties props) {
10 10 super(new Configuration());
11 11 ErrorContext.instance().resource(SQL Mapper Configuration);
12 12 this.configuration.setVariables(props);
13 13 this.parsed false;
14 14 this.environment environment;
15 15 this.parser parser;
16 16 }
17 17
18 18 //外部调用此方法对mybatis配置文件进行解析
19 19 public Configuration parse() {
20 20 if (parsed) {
21 21 throw new BuilderException(Each XMLConfigBuilder can only be used once.);
22 22 }
23 23 parsed true;
24 24 //从根节点configuration
25 25 parseConfiguration(parser.evalNode(/configuration));
26 26 return configuration;
27 27 }
28 28
29 29 //此方法就是解析configuration节点下的子节点
30 30 //由此也可看出我们在configuration下面能配置的节点为以下10个节点
31 31 private void parseConfiguration(XNode root) {
32 32 try {
33 33 propertiesElement(root.evalNode(properties)); //issue #117 read properties first
34 34 typeAliasesElement(root.evalNode(typeAliases));
35 35 pluginElement(root.evalNode(plugins));
36 36 objectFactoryElement(root.evalNode(objectFactory));
37 37 objectWrapperFactoryElement(root.evalNode(objectWrapperFactory));
38 38 settingsElement(root.evalNode(settings));
39 39 environmentsElement(root.evalNode(environments)); // read it after objectFactory and objectWrapperFactory issue #631
40 40 databaseIdProviderElement(root.evalNode(databaseIdProvider));
41 41 typeHandlerElement(root.evalNode(typeHandlers));
42 42 mapperElement(root.evalNode(mappers));
43 43 } catch (Exception e) {
44 44 throw new BuilderException(Error parsing SQL Mapper Configuration. Cause: e, e);
45 45 }
46 46 }
47 47 } 通过以上源码我们就能看出在mybatis的配置文件中 configuration节点为根节点。在configuration节点之下我们可以配置10个子节点 分别为properties、typeAliases、plugins、objectFactory、objectWrapperFactory、settings、environments、databaseIdProvider、typeHandlers、mappers。本篇文章就先只介绍这些内容接下来的文章将依次分析解析这个10个节点中比较重要的几个节点的源码看看在解析这些节点的时候到底做了些什么。 转载于:https://www.cnblogs.com/yizhiamumu/p/8996833.html