1.官方給出的案列:
注意:這些配置在文件中的順序非常重要!必須嚴格按照上圖中出現的順序定義
2.properties屬性
該屬性主要作用就是引入外部的properties是文件,文件格式為xxx=xxx
實例:
<!-- 加載外部配置文件 -->
<properties resource="jdbc.properties"></properties>
3.settings屬性
調整 settings 中的設置是非常關鍵的,它們會改變 MyBatis 的運行時行為。下表描述了設置中各項的意圖、默認值等。
設置參數 |
描述 |
有效值 |
默認值 |
cacheEnabled |
該配置影響的所有映射器中配置的緩存的全局開關。 |
true | false |
true |
lazyLoadingEnabled |
延遲加載的全局開關。當開啟時,所有關聯對象都會延遲加載。特定關聯關系中可通過設置fetchType屬性來覆蓋該項的開關狀態。 |
true | false |
false |
aggressiveLazyLoading |
當啟用時,帶有延遲加載屬性的對象的加載與否完全取決於對任意延遲屬性的調用;反之,每種屬性將會按需加載。 |
true | false |
true |
multipleResultSetsEnabled |
是否允許單一語句返回多結果集(需要兼容驅動)。 |
true | false |
true |
useColumnLabel |
使用列標簽代替列名。不同的驅動在這方面會有不同的表現,具體可參考相關驅動文檔或通過測試這兩種不同的模式來觀察所用驅動的結果。 |
true | false |
true |
useGeneratedKeys |
允許 JDBC 支持自動生成主鍵,需要驅動兼容。如果設置為 true 則這個設置強制使用自動生成主鍵,盡管一些驅動不能兼容但仍可正常工作(比如 Derby)。 |
true | false |
False |
autoMappingBehavior |
指定 MyBatis 是否以及如何自動映射指定的列到字段或屬性。NONE 表示取消自動映射;PARTIAL 只會自動映射沒有定義嵌套結果集映射的結果集。FULL 會自動映射任意復雜的結果集(包括嵌套和其他情況)。 |
NONE, PARTIAL, FULL |
PARTIAL |
defaultExecutorType |
配置默認的執行器。SIMPLE 就是普通的執行器;REUSE 執行器會重用預處理語句(prepared statements);BATCH 執行器將重用語句並執行批量更新。 |
SIMPLE REUSE BATCH |
SIMPLE |
defaultStatementTimeout |
設置超時時間,它決定驅動等待數據庫響應的秒數。 |
Any positive integer |
Not Set (null) |
safeRowBoundsEnabled |
允許在嵌套語句中使用行分界(RowBounds)。 |
true | false |
False |
mapUnderscoreToCamelCase |
是否開啟自動駝峰命名規則(camel case)映射,即從經典數據庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的類似映射。 |
true | false |
False |
localCacheScope |
MyBatis 利用本地緩存機制(Local Cache)防止循環引用(circular references)和加速重復嵌套查詢。默認值為 SESSION,這種情況下會緩存一個會話中執行的所有查詢。若設置值為 STATEMENT,本地會話僅用在語句執行上,對相同 SqlSession 的不同調用將不會共享數據。 |
SESSION | STATEMENT |
SESSION |
jdbcTypeForNull |
當沒有為參數提供特定的 JDBC 類型時,為空值指定 JDBC 類型。某些驅動需要指定列的 JDBC 類型,多數情況直接用一般類型即可,比如 NULL、VARCHAR 或 OTHER。 |
JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER |
OTHER |
lazyLoadTriggerMethods |
指定哪個對象的方法觸發一次延遲加載。 |
A method name list separated by commas |
equals,clone,hashCode,toString |
defaultScriptingLanguage |
指定動態 SQL 生成的默認語言。 |
A type alias or fully qualified class name. |
org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver |
callSettersOnNulls |
指定當結果集中值為 null 的時候是否調用映射對象的 setter(map 對象時為 put)方法,這對於有 Map.keySet() 依賴或 null 值初始化的時候是有用的。注意原始類型(int、boolean等)是不能設置成 null 的。 |
true | false |
false |
logPrefix |
指定 MyBatis 增加到日志名稱的前綴。 |
Any String |
Not set |
logImpl |
指定 MyBatis 所用日志的具體實現,未指定時將自動查找。 |
SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING |
Not set |
proxyFactory |
為 Mybatis 用來創建具有延遲加載能力的對象設置代理工具。 |
|
4.typeAliases別名
類型別名是為 Java 類型命名的一個短的名字。它只和 XML 配置有關,存在的意義僅在於用來減少類完全限定名的冗余。
<!-- 起別名 -->
<typeAliases>
<typeAlias alias="User" type="cn.mybatis.pojo.User"/>
</typeAliases>
Mybatis中已經定義好的別名:
5.mapper映射器
<mappers>
<mapper resource="usermapper.xml"/>
</mappers>
6.plugins插件
MyBatis中的插件,其實類似於攔截器的效果,可以實現在MyBatis的整個運行流程中的 某些指定位置進行攔截:
Executor:對執行器進行攔截,上圖括號內是可以攔截的方法
ParameterHandler:參數處理時進行攔截
ResultSetHandler:處理結果集,封裝Java對象時進行攔截
StatementHandler:編譯statement時進行攔截