MyBatis源碼學習系列:01-初始化

1.初始化java

從今天開始我將對MyBatis的源碼進行閱讀學習,學習的方式是一邊按照官方文檔的使用教程的順序來逐步閱讀對應實現源碼,並分析相應類結構及設計思想。sql

 

使用MyBatis通常有兩種方式加載配置信息,一種是使用XML配置文件,另外一種是使用Java代碼來自定義配置信息。通常狀況下咱們可能都會使用XML的方式來定義配置信息,這樣的好處是配置信息一目瞭然,也方便調整。首先來看下如何加載配置文件。mybatis

 

在MyBatis中,操做數據的是SqlSession接口。此接口對象由對應的工廠類SqlSessionFactory負責產生,那麼如何構建這個工廠類呢,MyBatis官方文檔在一開始就給出了相應的初始化方式。學習

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

首先指定一個配置文件路徑,而後使用SqlSessionFactoryBuilder來根據配置信息構建咱們要使用的SqlSessionFactory類。那麼這裏先了解一下這個builder類內部都作了什麼。ui

 從類結構圖上看,除了一個構造方法外,全都是重載了不一樣參數的build方法。其參數能夠是Reader,InputStream,Configuration對象等。下面挑幾個方法看下。設計

public SqlSessionFactory build(InputStream inputStream) {
    return build(inputStream, null, null);
  }
  public SqlSessionFactory build(InputStream inputStream, String environment) {
    return build(inputStream, environment, null);
  }
  public SqlSessionFactory build(InputStream inputStream, Properties properties) {
    return build(inputStream, null, properties);
  }
  
  //使用InputStream傳入配置文件的幾個重載方法都調用此方法,實際可傳入文件流,環境信息,以及屬性信息
  public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {
    try {
      //使用XMLConfigBuilder對象將IO流表示的配置文件內容轉化成Configuration對象實例,進行最終構建。
      XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);
      return build(parser.parse());
    } catch (Exception e) {
      throw ExceptionFactory.wrapException("Error building SqlSession.", e);
    } finally {
      ErrorContext.instance().reset();
      try {
        inputStream.close();
      } catch (IOException e) {
        // Intentionally ignore. Prefer previous error.
      }
    }
  }
    
  //全部的build方法最終都調用此處,建立默認的SqlSessionFactory。
  public SqlSessionFactory build(Configuration config) {
    return new DefaultSqlSessionFactory(config);
  }

上面的四個build方法中前三個都調用的是第四個build方法,前三個都只傳入了部分參數。而在第四個build方法中,使用了XMLConfigBuilder類來加載XML配置文件信息code

 XMLConfigBuilder擁有多個構造方法,能夠傳入不一樣方式的初始化信息,最終調用parse()方法將信息轉換成Configuration類的實例。xml

最後,SqlSessionFactoryBuilder對象使用轉換後的Configuration對象來建立一個默認的SqlSessionFactory,所以,咱們若是不另外處理的話,默認使用的工廠類就是DefaultSqlSessionFactory。對象

public SqlSessionFactory build(Configuration config) {
    return new DefaultSqlSessionFactory(config);
  }

初始化工廠類以後,就能夠進行數據操做了。教程

相關文章
相關標籤/搜索