<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration >
<!--properties元素主要是用來定義配置外在化,比如數據庫的連接屬性等。
這些屬性都是可外部配置且可動態替換的,既可以在典型的Java屬性文件中配置,亦可以通過properties元素的子元素來傳遞。
因此,通過方法參數傳遞的屬性具有最高優先級,resource/url屬性中指定的配置文件次之,最低優先級的是properties屬性中指定的屬性。-->
<properties resource="cn.bdqn.li.bean.User"/>
<!--setting是指定MyBatis的一些全局配置屬性,這是MyBatis中極為重要的調整設置,它們會改變MyBatis的運行時行為,-->
<!--所以我們需要清楚的知道這些屬性的作用及默認值。-->
<settings>
<!--logImpl 指定 MyBatis 所用日志的具體實現,未指定時將自動查找。-->
<setting name="logImpl" value="LOG4J"/>
</settings>
setting參數
| 設置參數 |
描述 |
有效值 |
默認值 |
| cacheEnabled |
該配置影響的所有映射器中配置的緩存的全局開關。 |
true | false |
true |
| lazyLoadingEnabled |
延遲加載的全局開關。當開啟時,所有關聯對象都會延遲加載。 特定關聯關系中可通過設置fetchType屬性來覆蓋該項的開關狀態。 |
true | false |
false |
| aggressiveLazyLoading |
當開啟時,任何方法的調用都會加載該對象的所有屬性。否則,每個屬性會按需加載(參考lazyLoadTriggerMethods). |
true | false |
false (true in ≤3.4.1) |
| multipleResultSetsEnabled |
是否允許單一語句返回多結果集(需要兼容驅動)。 |
true | false |
true |
| useColumnLabel |
使用列標簽代替列名。不同的驅動在這方面會有不同的表現, 具體可參考相關驅動文檔或通過測試這兩種不同的模式來觀察所用驅動的結果。 |
true | false |
true |
| useGeneratedKeys |
允許 JDBC 支持自動生成主鍵,需要驅動兼容。 如果設置為 true 則這個設置強制使用自動生成主鍵,盡管一些驅動不能兼容但仍可正常工作(比如 Derby)。 |
true | false |
False |
| autoMappingBehavior |
指定 MyBatis 應如何自動映射列到字段或屬性。 NONE 表示取消自動映射;PARTIAL 只會自動映射沒有定義嵌套結果集映射的結果集。 FULL 會自動映射任意復雜的結果集(無論是否嵌套)。 |
NONE, PARTIAL, FULL |
PARTIAL |
| autoMappingUnknownColumnBehavior |
指定發現自動映射目標未知列(或者未知屬性類型)的行為。
- NONE: 不做任何反應
- WARNING: 輸出提醒日志 ('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior'的日志等級必須設置為 WARN)
- FAILING: 映射失敗 (拋出 SqlSessionException)
|
NONE, WARNING, FAILING |
NONE |
| defaultExecutorType |
配置默認的執行器。SIMPLE 就是普通的執行器;REUSE 執行器會重用預處理語句(prepared statements); BATCH 執行器將重用語句並執行批量更新。 |
SIMPLE REUSE BATCH |
SIMPLE |
| defaultStatementTimeout |
設置超時時間,它決定驅動等待數據庫響應的秒數。 |
任意正整數 |
Not Set (null) |
| defaultFetchSize |
為驅動的結果集獲取數量(fetchSize)設置一個提示值。此參數只可以在查詢設置中被覆蓋。 |
任意正整數 |
Not Set (null) |
| safeRowBoundsEnabled |
允許在嵌套語句中使用分頁(RowBounds)。如果允許使用則設置為false。 |
true | false |
False |
| safeResultHandlerEnabled |
允許在嵌套語句中使用分頁(ResultHandler)。如果允許使用則設置為false。 |
true | false |
True |
| 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.XMLLanguageDriver |
| defaultEnumTypeHandler |
Specifies the TypeHandler used by default for Enum. (Since: 3.4.5) |
A type alias or fully qualified class name. |
org.apache.ibatis.type.EnumTypeHandler |
| callSettersOnNulls |
指定當結果集中值為 null 的時候是否調用映射對象的 setter(map 對象時為 put)方法,這對於有 Map.keySet() 依賴或 null 值初始化的時候是有用的。注意基本類型(int、boolean等)是不能設置成 null 的。 |
true | false |
false |
| returnInstanceForEmptyRow |
當返回行的所有列都是空時,MyBatis默認返回null。 當開啟這個設置時,MyBatis會返回一個空實例。 請注意,它也適用於嵌套的結果集 (i.e. collectioin and association)。(從3.4.2開始) |
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 創建具有延遲加載能力的對象所用到的代理工具。 |
CGLIB | JAVASSIST |
JAVASSIST (MyBatis 3.3 or above) |
| vfsImpl |
指定VFS的實現 |
自定義VFS的實現的類全限定名,以逗號分隔。 |
Not set |
| useActualParamName |
允許使用方法簽名中的名稱作為語句參數名稱。 為了使用該特性,你的工程必須采用Java 8編譯,並且加上-parameters選項。(從3.4.1開始) |
true | false |
true |
| configurationFactory |
指定一個提供Configuration實例的類. 這個被返回的Configuration實例是用來加載被反序列化對象的懶加載屬性值. 這個類必須包含一個簽名方法static Configuration getConfiguration(). (從 3.2.3 版本開始) |
類型別名或者全類名. |
Not set |
<!--類型別名是為Java類型設置一個短的名字。它只和xml配置有關,存在的意義僅在於用來減少類完全限定名的冗余-->
<typeAliases>
<typeAlias type="cn.bdqn.li.bean.User" alias="User"/>
</typeAliases>
<!--設置mybatis運行環境 default默認運行環境是environment節點中的id -->
<environments default="development">
<environment id="development">
<!--事務管理器的配置 兩種類型的事務管理器(也就是 type="[JDBC|MANAGED]")
JDBC具有提交和回滾功能
MANAGED是讓容器來管理事務的整個生命周期。默認情況下它會關閉連接
(一般情況下需要將closeConnection屬性設置為false來阻止它默認的行為)。
Spring+mybatis則不需要配置事務管理器。因為spring模塊會使用自帶的管理器來覆蓋前面的配置。-->
<transactionManager type="JDBC"></transactionManager>
<!--配置數據源 POOLED:mybatis自帶的數據源 JNDI:tomcat中的數據源
有三種內建的數據源類型(也就是 type="[]UNPOOLED|POOLED|JNDI]");
UNPOOLED :這個數據源的實現只是被請求時打開和關閉連接。雖然有一點慢,它對在及時可用連接方面沒有性能要求的簡單應用是一個很好的選擇;
POOLED: 這種數據源的實現利用“池”的概念將JDBC連接對象組織起來,避免了創建新的連接實例時所必需的初始化和認證時間。這是一種使得並發web應用快速響應請求的流行處理方式。
poolMaximumActiveConnections: 在任意時間可以存在的活動(也就是正在使用)連接數量,默認值10
poolMaximumIdleConnections: 任意時間可能存在的空閑連接數。
poolMaximumCheckoutTime: 在被強制返回之前,池中連接被檢出(checked out)時間,默認值:20000毫秒(即20秒)
poolTimeToWait: 這是一個底層設置,如果獲取連接花費的相當長的時間,它會給連接池打印狀態日志並重新嘗試獲取一個連接(避免在誤配置的情況下一直安靜的失敗),默認值20000毫秒(即20秒)。
poolPingQuery: 發送到數據庫的偵測查詢,用來檢驗連接是否處在正常的工作秩序中,並且准備接受請求。默認是"NOT PING QUERY SET",這會導致多數數據庫連接失敗時帶有一個恰當的錯誤信息。
poolPingEnabled: 是否啟用偵測。若開啟,也必須使用一個可執行的SQL語句設置poolPingQuery屬性(最好是一個非常快的SQL),默認值:false。
poolPingConnectionsNotUsedFor: 配置poolPingQuery使用的頻度。這可以被設置成匹配具體的數據庫連接超時時間,來避免不必要的偵測,默認值:0(即所有連接每一時刻都被偵測 ,當然僅當 poolPingEnabled為true時適用)。
JNDI: 這個數據源的實現是為了能在如EJB或應用服務器這類容器中使用,容器可以集中或在外部配置數據源,然后放置一個JNDI上下文的引用。-->
<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>
</environments>
<mappers><!--管理我們設置的映射文件 ,SQL映射語句文件,可以是多個
第一種(常用): resource指向的是相對於類路徑下的目錄
第二種:使用完全限定路徑,如:<mapper url="file:///D:\workspace\mybatis1\config\sqlmap\User.xml" />
使用mapper接口類路徑,如:<mapper class="cn.kang.mapper.UserMapper"/>-->
<mapper resource="cn/bdqn/li/dao/UserMapper.xml"/>
</mappers>
</configuration>