1. 程式人生 > >MyBatis 全域性配置檔案解析

MyBatis 全域性配置檔案解析

### 1. dtd約束

1.config
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
2.mapper
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

2. properties

引入其他檔案的,下面的檔案內容${}去引用data.properties的變數

<properties resource="datasource.properties"></properties>

3. setting

  1. cacheEnabled:
    該配置影響的所有對映器中配置的快取的全域性開關
  2. useGeneratedKeys:
    自動生成主鍵
  3. lazyLoadingEnabled:
    用的時候才載入,提升效能
  4. aggressiveLazyLoading
    當開啟時,任何方法的呼叫都會載入該物件的所有屬性。否則,每個屬性會按需載入,低於3.4.1預設為true,高於3.4.1預設為false
  5. mapUnderscoreToCamelCase:
    駝峰命名自動對映
  6. logImpl:
    指定 MyBatis 所用日誌的具體實現,未指定時將自動查詢
  7. logPrefix
    指定 MyBatis 增加到日誌名稱的字首。
  8. jdbcTypeForNull :
    當沒有為引數提供特定的 JDBC 型別時,為空值指定 JDBC 型別。 某些驅動需要指定列的 JDBC
    型別,多數情況直接用一般型別即可,比如 NULL、VARCHAR 或 OTHER。
  9. localCacheScope:
    MyBatis 利用本地快取機制(Local Cache)防止迴圈引用(circular references)和加速重複巢狀查詢。 預設值為 SESSION,這種情況下會快取
    一個會話中執行的所有查詢。若設定值為STATEMENT,本地會話僅用在語句執行上,對相同 SqlSession 的不同調用將不會共享資料。
  10. lazyLoadTriggerMethods:
    指定哪個物件的方法觸發一次延遲加
  11. jdbcTypeForNull
    mybatis對null的處理方式,為空值指定 JDBC 型別。 某些驅動需要指定列的 JDBC 型別,多數情況直接用一般型別即可,比如 NULL、VARCHAR 或 OTHER。

4. typeAliases

1.<typeAliases>
  <typeAlias alias="Author" type="domain.blog.Author"/>
  <typeAlias alias="Blog" type="domain.blog.Blog"/>
  <typeAlias alias="Comment" type="domain.blog.Comment"/>
  <typeAlias alias="Post" type="domain.blog.Post"/>
  <typeAlias alias="Section" type="domain.blog.Section"/>
  <typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>

2.<typeAliases>
  <package name="domain.blog"/>
</typeAliases>

3.@Alias("author")
public class Author {
    ...
}

5. typeHandlers (後來的版本已經自動載入)

MyBatis 在不論在預處理語句(PreparedStatement)中設定一個引數時,還是從結果集中取出一個值時, 都會用型別處理器將獲取的值以合適的方式轉換成 Java 型別。下表描述了一些預設的型別處理器

@MappedJdbcTypes(JdbcType.VARCHAR)
public class ExampleTypeHandler extends BaseTypeHandler<String> {

  @Override
  public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
    ps.setString(i, parameter);
  }

  @Override
  public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
    return rs.getString(columnName);
  }

  @Override
  public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
    return rs.getString(columnIndex);
  }

  @Override
  public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
    return cs.getString(columnIndex);
  }
}
<!-- mybatis-config.xml -->
<typeHandlers>
  <typeHandler handler="org.mybatis.example.ExampleTypeHandler"/>
</typeHandlers>

6. 配置環境(environments)

<environments default="development1">//使用哪個配置
  <environment id="development">
    <transactionManager type="JDBC">//oracle
      <property name="..." value="..."/>
    </transactionManager>
    <dataSource type="POOLED">
      <property name="driver" value="${driver}"/>
      <property name="url" value="${url}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
    </dataSource>
     <environment id="development1">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <dataSource type="POOLED">//pooled(資料庫連線池方式) unpooled jndc
      <property name="driver" value="${driver}"/>
      <property name="url" value="${url}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
    </dataSource>
  </environment>
</environments>

6.databaseIdProvider

MyBatis 可以根據不同的資料庫廠商執行不同的語句,這種多廠商的支援是基於對映語句中的 databaseId 屬性。 MyBatis 會載入不帶 databaseId 屬性和帶有匹配當前資料庫 databaseId 屬性的所有語句。 如果同時找到帶有 databaseId 和不帶 databaseId 的相同語句,則後者會被捨棄

<databaseIdProvider type="DB_VENDOR">
  <property name="SQL Server" value="sqlserver"/>
  <property name="DB2" value="db2"/>        
  <property name="Oracle" value="oracle" />
</databaseIdProvider>

7.對映器(mappers)

1.<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

2.<mappers>

  <mapper url="org/mybatis/builder/PostMapper.xml"/>
</mappers>

3.<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

4.<mappers>
  <mapper class="介面路徑"/>

  </mappers>