亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

深入淺出Mybatis系列(二)---配置簡介(mybatis源碼篇)

2019-11-11 07:08:59
字體:
來源:轉載
供稿:網友

上篇文章《深入淺出Mybatis系列(一)---Mybatis入門》, 寫了一個Demo簡單體現了一下Mybatis的流程。本次,將簡單介紹一下Mybatis的配置文件:

上次例子中,我們以 SqlsessionFactoryBuilder 去創建 SqlSessionFactory,  那么,我們就先從SqlSessionFactoryBuilder入手, 咱們先看看源碼是怎么實現的:

SqlSessionFactoryBuilder源碼片段:

public class SqlSessionFactoryBuilder {  //Reader讀取mybatis配置文件,傳入構造方法  //除了Reader外,其實還有對應的inputStream作為參數的構造方法,  //這也體現了mybatis配置的靈活性  public SqlSessionFactory build(Reader reader) {    return build(reader, null, null);  }  public SqlSessionFactory build(Reader reader, String environment) {    return build(reader, environment, null);  }    //mybatis配置文件 + PRoperties, 此時mybatis配置文件中可以不配置properties,也能使用${}形式  public SqlSessionFactory build(Reader reader, Properties properties) {    return build(reader, null, properties);  }    //通過xmlConfigBuilder解析mybatis配置,然后創建SqlSessionFactory對象  public SqlSessionFactory build(Reader reader, String environment, Properties properties) {    try {      XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);      //下面看看這個方法的源碼      return build(parser.parse());    } catch (Exception e) {      throw ExceptionFactory.wrapException("Error building SqlSession.", e);    } finally {      ErrorContext.instance().reset();      try {        reader.close();      } catch (IOException e) {        // Intentionally ignore. Prefer previous error.      }    }  }  public SqlSessionFactory build(Configuration config) {    return new DefaultSqlSessionFactory(config);  }}通過源碼,我們可以看到SqlSessionFactoryBuilder 通過XMLConfigBuilder 去解析我們傳入的mybatis的配置文件, 下面就接著看看 XMLConfigBuilder 部分源碼:

/** * mybatis 配置文件解析 */public class XMLConfigBuilder extends BaseBuilder {  public XMLConfigBuilder(InputStream inputStream, String environment, Properties props) {    this(new XPathParser(inputStream, true, props, new XMLMapperEntityResolver()), environment, props);  }  private XMLConfigBuilder(XPathParser parser, String environment, Properties props) {    super(new Configuration());    ErrorContext.instance().resource("SQL Mapper Configuration");    this.configuration.setVariables(props);    this.parsed = false;    this.environment = environment;    this.parser = parser;  }    //外部調用此方法對mybatis配置文件進行解析  public Configuration parse() {    if (parsed) {      throw new BuilderException("Each XMLConfigBuilder can only be used once.");    }    parsed = true;    //從根節點configuration    parseConfiguration(parser.evalNode("/configuration"));    return configuration;  }  //此方法就是解析configuration節點下的子節點  //由此也可看出,我們在configuration下面能配置的節點為以下10個節點  private void parseConfiguration(XNode root) {    try {      propertiesElement(root.evalNode("properties")); //issue #117 read properties first      typeAliasesElement(root.evalNode("typeAliases"));      pluginElement(root.evalNode("plugins"));      objectFactoryElement(root.evalNode("objectFactory"));      objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));      settingsElement(root.evalNode("settings"));      environmentsElement(root.evalNode("environments")); // read it after objectFactory and objectWrapperFactory issue #631      databaseIdProviderElement(root.evalNode("databaseIdProvider"));      typeHandlerElement(root.evalNode("typeHandlers"));      mapperElement(root.evalNode("mappers"));    } catch (Exception e) {      throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);    }  }}

通過以上源碼,我們就能看出,在mybatis的配置文件中:

1. configuration節點為根節點。

2. 在configuration節點之下,我們可以配置10個子節點, 分別為:properties、typeAliases、plugins、objectFactory、objectWrapperFactory、settings、environments、databaseIdProvider、typeHandlers、mappers。

 

本篇文章就先只介紹這些內容,接下來的文章將依次分析解析這個10個節點中比較重要的幾個節點的源碼,看看在解析這些節點的時候,到底做了些什么。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色系列之999| 欧美日韩激情视频| 亚洲第一av网| 高清欧美电影在线| 久久久噜噜噜久噜久久| 国产精品老牛影院在线观看| 欧美猛男性生活免费| 国产一区二区精品丝袜| 中文字幕久热精品视频在线| 国产亚洲美女精品久久久| 亚洲a中文字幕| 国产精品美女久久久久久免费| 久久精品福利视频| 国产精品欧美亚洲777777| 色诱女教师一区二区三区| 久久久午夜视频| 欧美精品久久久久久久免费观看| 亚洲美女动态图120秒| 成人黄色免费网站在线观看| 国产日本欧美在线观看| 亚洲成人网在线观看| 日日噜噜噜夜夜爽亚洲精品| 国产精品a久久久久久| 国产91网红主播在线观看| 在线观看日韩www视频免费| 久久人人97超碰精品888| 久久久之久亚州精品露出| 色婷婷亚洲mv天堂mv在影片| 欧美极品少妇xxxxⅹ免费视频| 中文字幕不卡在线视频极品| 午夜精品一区二区三区在线视频| 亚洲色图色老头| 精品久久久久久中文字幕大豆网| 欧美一乱一性一交一视频| 国产精品吹潮在线观看| 人人做人人澡人人爽欧美| 国产高清在线不卡| 国产精品久久久久久av福利软件| 一区二区三区无码高清视频| 成人免费在线视频网站| 欧美成人精品在线观看| 国产精品香蕉av| 日本不卡免费高清视频| 日本久久久久久久久| 国产精品视频大全| 精品日韩视频在线观看| 精品综合久久久久久97| 69久久夜色精品国产69| 国产一区二区三区免费视频| 国产亚洲精品久久久久动| 国产精品一区=区| 欧美成人中文字幕| 国产精品一区二区三区成人| 91精品在线观| 国产999精品久久久影片官网| 日韩免费在线看| 国产美女精品视频免费观看| 亚洲欧美中文日韩v在线观看| 欧美黑人一区二区三区| **欧美日韩vr在线| 精品久久久久久电影| 日韩中文第一页| 国产欧美最新羞羞视频在线观看| 懂色av一区二区三区| 亚洲另类欧美自拍| 国产精品成人免费视频| 亚洲国产高清高潮精品美女| 自拍偷拍免费精品| 精品视频中文字幕| 中文字幕欧美专区| 91av视频在线播放| 亚洲欧洲偷拍精品| 欧美电影在线观看完整版| 国产精品香蕉在线观看| 亚洲日本中文字幕| 欧美色另类天堂2015| 亚洲美女视频网站| 久久综合久久88| 国产婷婷色综合av蜜臀av| 久久99视频免费| 国产伦精品一区二区三区精品视频| 亚洲最大福利网| 欧美另类老肥妇| 欧美亚洲成人xxx| 欧美插天视频在线播放| 欧美激情中文网| 91av在线视频观看| 法国裸体一区二区| 在线播放日韩av| 国产精品自产拍在线观看| 日产精品久久久一区二区福利| 91色在线观看| 久久久精品一区二区三区| 欧美福利视频在线观看| 国产69久久精品成人看| 精品中文字幕久久久久久| 久久久精品在线观看| 91精品啪在线观看麻豆免费| 欧洲日韩成人av| 国产精品成久久久久三级| 中文字幕精品视频| 91精品国产乱码久久久久久久久| 久久精品91久久香蕉加勒比| 久青草国产97香蕉在线视频| 中文字幕精品久久久久| 亚洲精品www久久久久久广东| 久久久久久97| 日韩在线观看免费网站| 69av视频在线播放| 欧美日韩久久久久| 日韩一区二区三区国产| 国产精品成人v| 一区二区三区视频观看| 国产精品久久999| 精品偷拍各种wc美女嘘嘘| 亚洲一区二区三区香蕉| 中文字幕亚洲图片| 精品成人国产在线观看男人呻吟| 久久九九有精品国产23| 日韩色av导航| 丝袜亚洲欧美日韩综合| 日韩高清免费在线| 久久人人看视频| 日韩电影网在线| www.日韩视频| 国产精品伦子伦免费视频| 欧美一级大片视频| 欧美性猛交xxxx乱大交| 91久久久精品| 欧美成人小视频| 国产欧美亚洲视频| 亚洲毛茸茸少妇高潮呻吟| 欧美精品电影免费在线观看| 欧美日韩亚洲成人| 麻豆精品精华液| 欧美精品18videos性欧美| 久久视频在线视频| 欧美—级高清免费播放| 亚洲成人激情图| 欧美性猛交xxxx乱大交蜜桃| 51久久精品夜色国产麻豆| 亚洲精品欧美极品| 国产精品成人一区二区三区吃奶| 日韩成人免费视频| 欧美激情亚洲自拍| 国产在线视频不卡| 欧美日韩免费看| 自拍亚洲一区欧美另类| 亚洲精品成人免费| 日本午夜在线亚洲.国产| 精品国内产的精品视频在线观看| 91牛牛免费视频| 欧美性猛交xxxx免费看| 91精品国产91久久久久久久久| 亚洲欧美色婷婷| 日韩欧美一区二区三区久久| 奇米成人av国产一区二区三区| 亚洲精品视频二区| 亚洲日本欧美日韩高观看| 久久久免费精品视频| 一本色道久久88精品综合| 亚洲第一福利视频| 日韩电视剧免费观看网站| 久久精品视频免费播放|