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