mybatis-config.xml的配置詳解
阿新 • • 發佈:2019-01-30
<configuration>
<!-- 引數設定 -->
<settings>
<!-- 這個配置使全域性的對映器啟用或禁用快取 -->
<setting name="cacheEnabled" value="true" />
<!-- 全域性啟用或禁用延遲載入。當禁用時,所有關聯物件都會即時載入 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 當啟用時,有延遲載入屬性的物件在被呼叫時將會完全載入任意屬性。否則,每種屬性將會按需要載入 -->
<setting name="aggressiveLazyLoading" value="true" />
<!-- 允許或不允許多種結果集從一個單獨的語句中返回(需要適合的驅動) -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 使用列標籤代替列名。不同的驅動在這方便表現不同。參考驅動文件或充分測試兩種方法來決定所使用的驅動 -->
<setting name="useColumnLabel" value="true" />
<!-- 允許JDBC支援生成的鍵。需要適合的驅動。如果設定為true則這個設定強制生成的鍵被使用,儘管一些驅動拒絕相容但仍然有效(比如Derby) -->
<setting name="useGeneratedKeys" value="true" />
<!-- 指定MyBatis如何自動對映列到欄位/屬性。PARTIAL只會自動對映簡單,沒有巢狀的結果。FULL會自動對映任意複雜的結果(巢狀的或其他情況) -->
<setting name="autoMappingBehavior" value="PARTIAL" />
<!--當檢測出未知列(或未知屬性)時,如何處理,預設情況下沒有任何提示,這在測試的時候很不方便,不容易找到錯誤。
NONE : 不做任何處理 (預設值)
WARNING : 警告日誌形式的詳細資訊
FAILING : 對映失敗,丟擲異常和詳細資訊
-->
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<!-- 配置預設的執行器。SIMPLE執行器沒有什麼特別之處。REUSE執行器重用預處理語句。BATCH執行器重用語句和批量更新 -->
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 設定超時時間,它決定驅動等待一個數據庫響應的時間 -->
<setting name="defaultStatementTimeout" value="25000" />
<!--設定查詢返回值數量,可以被查詢數值覆蓋 -->
<setting name="defaultFetchSize" value="100"/>
<!-- 允許在巢狀語句中使用分頁-->
<setting name="safeRowBoundsEnabled" value="false"/>
<!--是否開啟自動駝峰命名規則(camel case)對映,即從經典資料庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的類似對映。-->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!--MyBatis 利用本地快取機制(Local Cache)防止迴圈引用(circular references)和加速重複巢狀查詢。 預設值為 SESSION,這種情況下會快取一個會話中執行的所有查詢。 若設定值為 STATEMENT,本地會話僅用在語句執行上,對相同 SqlSession 的不同調用將不會共享資料。-->
<setting name="localCacheScope" value="SESSION"/>
<!-- 當沒有為引數提供特定的 JDBC 型別時,為空值指定 JDBC 型別。 某些驅動需要指定列的 JDBC 型別,多數情況直接用一般型別即可,比如 NULL、VARCHAR
OTHER。-->
<setting name="jdbcTypeForNull" value="OTHER"/>
<!-- 指定哪個物件的方法觸發一次延遲載入。-->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
<!-- 別名定義 -->
<typeAliases>
<typeAlias alias="pageAccessURL" type="com.lgm.mybatis.model.PageAccessURL" />
</typeAliases>
<!--自定義型別處理器 -->
<typeHandlers>
<!-- <typeHandler handler="com.xhm.util.BooleanTypeHandlder" /> -->
<!--掃描整個包下的自定義型別處理器-->
<package name="com.xhm.util"/>
</typeHandlers>
<!--plugins外掛之 分頁攔截器 -->
<plugins>
<plugin interceptor="com.xhm.util.PageInterceptor"></plugin>
</plugins>
<!--配置environment環境-->
<environments default="development">
<!-- 環境配置,每個SqlSessionFactory對應一個環境 -->
<environment id="development1">
<!-- 事務配置 type= JDBC、MANAGED 1.JDBC:這個配置直接簡單使用了JDBC的提交和回滾設定。它依賴於從資料來源得到的連線來管理事務範圍。
2.MANAGED:這個配置幾乎沒做什麼。它從來不提交或回滾一個連線。而它會讓容器來管理事務的整個生命週期(比如Spring或JEE應用伺服器的上下文)。 預設情況下它會關閉連線。然而一些容器並不希望這樣,因此如果你需要從連線中停止它,將closeConnection屬性設定為false -->
<transactionManager type="JDBC" />
<!-- <transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager> -->
<!-- 資料來源型別:type = UNPOOLED、POOLED、JNDI 1.UNPOOLED:這個資料來源的實現是每次被請求時簡單開啟和關閉連線。它有一點慢,這是對簡單應用程式的一個很好的選擇,因為它不需要及時的可用連線。
不同的資料庫對這個的表現也是不一樣的,所以對某些資料庫來說配置資料來源並不重要,這個配置也是閒置的 2.POOLED:這是JDBC連線物件的資料來源連線池的實現,用來避免建立新的連線例項時必要的初始連線和認證時間。
這是一種當前Web應用程式用來快速響應請求很流行的方法。 3.JNDI:這個資料來源的實現是為了使用如Spring或應用伺服器這類的容器,容器可以集中或在外部配置資料來源,然後放置一個JNDI上下文的引用 -->
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/xhm" />
<property name="username" value="root" />
<property name="password" value="root" />
<!-- 預設連線事務隔離級別 <property name="defaultTransactionIsolationLevel" value=""
/> -->
</dataSource>
</environment>
<!-- 環境配置 -->
<environment id="development2">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/xhm" />
<property name="username" value="root" />
<property name="password" value="root" />
<!-- 在任意時間存在的活動(也就是正在使用)連線的數量 -->
<property name="poolMaximumActiveConnections" value="10" />
<!-- 任意時間存在的空閒連線數 -->
<property name="poolMaximumIdleConnections" value="5" />
<!-- 在被強制返回之前,池中連線被檢查的時間 -->
<property name="poolMaximumCheckoutTime" value="20000" />
<!-- 這是給連線池一個列印日誌狀態機會的低層次設定,還有重新嘗試獲得連線,這些情況下往往需要很長時間(為了避免連線池沒有配置時靜默失敗) -->
<property name="poolTimeToWait" value="20000" />
<!-- 傳送到資料的偵測查詢,用來驗證連線是否正常工作,並且準備接受請求。 -->
<property name="poolPingQuery" value="NO PING QUERY SET" />
<!-- 這是開啟或禁用偵測查詢。如果開啟,你必須用一個合法的SQL語句(最好是很快速的)設定poolPingQuery屬性 -->
<property name="poolPingEnabled" value="false" />
<!-- 這是用來配置poolPingQuery多次時間被用一次。這可以被設定匹配標準的資料庫連線超時時間,來避免不必要的偵測 -->
<property name="poolPingConnectionsNotUsedFor" value="0" />
</dataSource>
</environment>
<!-- 環境配置 -->
<environment id="development3">
<transactionManager type="JDBC" />
<dataSource type="JNDI">
<property name="data_source" value="java:comp/env/jndi/mybatis" />
<property name="env.encoding" value="UTF8" />
<!-- <property name="initial_context" value=""/> <property name="env.encoding"
value="UTF8"/> -->
</dataSource>
</environment>
</environments>
<!-- 對映檔案,mapper的配置檔案 -->
<mappers>
<!--直接對映到相應的mapper檔案-->
<mapper resource="com/xhm/mapper/UserMapper.xml"/>
<!--掃描包路徑下所有xxMapper.xml檔案-->
<package name="com.xhm.mapper"/>
</mappers>
</configuration>
<!-- 引數設定 -->
<settings>
<!-- 這個配置使全域性的對映器啟用或禁用快取 -->
<setting name="cacheEnabled" value="true" />
<!-- 全域性啟用或禁用延遲載入。當禁用時,所有關聯物件都會即時載入 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 當啟用時,有延遲載入屬性的物件在被呼叫時將會完全載入任意屬性。否則,每種屬性將會按需要載入 -->
<setting name="aggressiveLazyLoading" value="true" />
<!-- 允許或不允許多種結果集從一個單獨的語句中返回(需要適合的驅動) -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 使用列標籤代替列名。不同的驅動在這方便表現不同。參考驅動文件或充分測試兩種方法來決定所使用的驅動 -->
<setting name="useColumnLabel" value="true" />
<!-- 允許JDBC支援生成的鍵。需要適合的驅動。如果設定為true則這個設定強制生成的鍵被使用,儘管一些驅動拒絕相容但仍然有效(比如Derby) -->
<setting name="useGeneratedKeys" value="true" />
<!-- 指定MyBatis如何自動對映列到欄位/屬性。PARTIAL只會自動對映簡單,沒有巢狀的結果。FULL會自動對映任意複雜的結果(巢狀的或其他情況) -->
<setting name="autoMappingBehavior" value="PARTIAL" />
<!--當檢測出未知列(或未知屬性)時,如何處理,預設情況下沒有任何提示,這在測試的時候很不方便,不容易找到錯誤。
NONE : 不做任何處理 (預設值)
WARNING : 警告日誌形式的詳細資訊
FAILING : 對映失敗,丟擲異常和詳細資訊
-->
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<!-- 配置預設的執行器。SIMPLE執行器沒有什麼特別之處。REUSE執行器重用預處理語句。BATCH執行器重用語句和批量更新 -->
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 設定超時時間,它決定驅動等待一個數據庫響應的時間 -->
<setting name="defaultStatementTimeout" value="25000" />
<!--設定查詢返回值數量,可以被查詢數值覆蓋 -->
<setting name="defaultFetchSize" value="100"/>
<!-- 允許在巢狀語句中使用分頁-->
<setting name="safeRowBoundsEnabled" value="false"/>
<!--是否開啟自動駝峰命名規則(camel case)對映,即從經典資料庫列名 A_COLUMN 到經典 Java 屬性名 aColumn 的類似對映。-->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!--MyBatis 利用本地快取機制(Local Cache)防止迴圈引用(circular references)和加速重複巢狀查詢。 預設值為 SESSION,這種情況下會快取一個會話中執行的所有查詢。 若設定值為 STATEMENT,本地會話僅用在語句執行上,對相同 SqlSession 的不同調用將不會共享資料。-->
<setting name="localCacheScope" value="SESSION"/>
<!-- 當沒有為引數提供特定的 JDBC 型別時,為空值指定 JDBC 型別。 某些驅動需要指定列的 JDBC 型別,多數情況直接用一般型別即可,比如 NULL、VARCHAR
OTHER。-->
<setting name="jdbcTypeForNull" value="OTHER"/>
<!-- 指定哪個物件的方法觸發一次延遲載入。-->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
<!-- 別名定義 -->
<typeAliases>
<typeAlias alias="pageAccessURL" type="com.lgm.mybatis.model.PageAccessURL" />
</typeAliases>
<!--自定義型別處理器 -->
<typeHandlers>
<!-- <typeHandler handler="com.xhm.util.BooleanTypeHandlder" /> -->
<!--掃描整個包下的自定義型別處理器-->
<package name="com.xhm.util"/>
</typeHandlers>
<!--plugins外掛之 分頁攔截器 -->
<plugins>
<plugin interceptor="com.xhm.util.PageInterceptor"></plugin>
</plugins>
<!--配置environment環境-->
<environments default="development">
<!-- 環境配置,每個SqlSessionFactory對應一個環境 -->
<environment id="development1">
<!-- 事務配置 type= JDBC、MANAGED 1.JDBC:這個配置直接簡單使用了JDBC的提交和回滾設定。它依賴於從資料來源得到的連線來管理事務範圍。
2.MANAGED:這個配置幾乎沒做什麼。它從來不提交或回滾一個連線。而它會讓容器來管理事務的整個生命週期(比如Spring或JEE應用伺服器的上下文)。 預設情況下它會關閉連線。然而一些容器並不希望這樣,因此如果你需要從連線中停止它,將closeConnection屬性設定為false -->
<transactionManager type="JDBC" />
<!-- <transactionManager type="MANAGED">
<property name="closeConnection" value="false"/>
</transactionManager> -->
<!-- 資料來源型別:type = UNPOOLED、POOLED、JNDI 1.UNPOOLED:這個資料來源的實現是每次被請求時簡單開啟和關閉連線。它有一點慢,這是對簡單應用程式的一個很好的選擇,因為它不需要及時的可用連線。
不同的資料庫對這個的表現也是不一樣的,所以對某些資料庫來說配置資料來源並不重要,這個配置也是閒置的 2.POOLED:這是JDBC連線物件的資料來源連線池的實現,用來避免建立新的連線例項時必要的初始連線和認證時間。
這是一種當前Web應用程式用來快速響應請求很流行的方法。 3.JNDI:這個資料來源的實現是為了使用如Spring或應用伺服器這類的容器,容器可以集中或在外部配置資料來源,然後放置一個JNDI上下文的引用 -->
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/xhm" />
<property name="username" value="root" />
<property name="password" value="root" />
<!-- 預設連線事務隔離級別 <property name="defaultTransactionIsolationLevel" value=""
/> -->
</dataSource>
</environment>
<!-- 環境配置 -->
<environment id="development2">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/xhm" />
<property name="username" value="root" />
<property name="password" value="root" />
<!-- 在任意時間存在的活動(也就是正在使用)連線的數量 -->
<property name="poolMaximumActiveConnections" value="10" />
<!-- 任意時間存在的空閒連線數 -->
<property name="poolMaximumIdleConnections" value="5" />
<!-- 在被強制返回之前,池中連線被檢查的時間 -->
<property name="poolMaximumCheckoutTime" value="20000" />
<!-- 這是給連線池一個列印日誌狀態機會的低層次設定,還有重新嘗試獲得連線,這些情況下往往需要很長時間(為了避免連線池沒有配置時靜默失敗) -->
<property name="poolTimeToWait" value="20000" />
<!-- 傳送到資料的偵測查詢,用來驗證連線是否正常工作,並且準備接受請求。 -->
<property name="poolPingQuery" value="NO PING QUERY SET" />
<!-- 這是開啟或禁用偵測查詢。如果開啟,你必須用一個合法的SQL語句(最好是很快速的)設定poolPingQuery屬性 -->
<property name="poolPingEnabled" value="false" />
<!-- 這是用來配置poolPingQuery多次時間被用一次。這可以被設定匹配標準的資料庫連線超時時間,來避免不必要的偵測 -->
<property name="poolPingConnectionsNotUsedFor" value="0" />
</dataSource>
</environment>
<!-- 環境配置 -->
<environment id="development3">
<transactionManager type="JDBC" />
<dataSource type="JNDI">
<property name="data_source" value="java:comp/env/jndi/mybatis" />
<property name="env.encoding" value="UTF8" />
<!-- <property name="initial_context" value=""/> <property name="env.encoding"
value="UTF8"/> -->
</dataSource>
</environment>
</environments>
<!-- 對映檔案,mapper的配置檔案 -->
<mappers>
<!--直接對映到相應的mapper檔案-->
<mapper resource="com/xhm/mapper/UserMapper.xml"/>
<!--掃描包路徑下所有xxMapper.xml檔案-->
<package name="com.xhm.mapper"/>
</mappers>
</configuration>