1. 程式人生 > >mybatis-config.xml的配置詳解

mybatis-config.xml的配置詳解

<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>