文章目錄
- MyBatis 的配置文件包含了會深深影響 MyBatis 行爲的設置和屬性信息。
- 在配置文件中, 必定要保證配置信息的順序, 否則就會報錯, 以下圖
屬性(properties)
- 在MyBatis配置文件中,你可使用properties標籤在外部引入配置信息, 也能夠在標籤內經過property標籤設置配置信息
- 新建config.properties文件寫入配置信息, 而後使用properties標籤獲取配置信息
- 使用propetry標籤設置配置信息
<properties > <property name="username" value="root"/> </properties>
- 設置好的屬性能夠在整個配置文件中用來替換須要動態配置的屬性值。
<environment id="development3"> <transactionManager type="JDBC"/> <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>
- 注意, 對應的名稱必定要相同, 好比username就要對應username, 並且若是同時使用外部配置文件和property, 優先級是外部配置文件優先級更高
設置(settings)
- 這是 MyBatis 中極爲重要的調整設置,它們會改變 MyBatis 的運行時行爲。 下表描述了設置中各項設置的含義、默認值等。
<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <setting name="defaultFetchSize" value="100"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> </settings>
類型別名(typeAliases)
- 設置短的名字, 意義在於減小徹底限定名, 代碼更加整潔, 若是咱們不設置別名, 那麼咱們在映射器文件中就必須使用全限定名, 若是咱們設置了別名就可使用咱們的別名代替全限定名
- 設置方式
- 在配置文件中DIY設置
<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>
- 給定包自動掃描設置, 這種默認生成的別名是首字母小寫的全名稱好比domain.blog.Author生成的就是author
<typeAliases> <package name="domain.blog"/> </typeAliases>
- 經過註解DIY別名
@Alias("author") public class Author { ... }
環境配置(environments)
- MyBatis 能夠配置成適應多種環境,這種機制有助於將 SQL 映射應用於多種數據庫之中
- 不過要記住:儘管能夠配置多個環境,但每一個 SqlSessionFactory 實例只能選擇一種環境。
- 若是你想鏈接兩個數據庫,就須要建立兩個 SqlSessionFactory 實例,每一個數據庫對應一個。而若是是三個數據庫,就須要三個實例
- environments 使用default綁定哪一個id就是時間哪一個環境
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"> <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> </environments>
注意一些關鍵點
默認使用的環境 ID(好比:default=「development」)。
每一個 environment 元素定義的環境 ID(好比:id=「development」)。
事務管理器的配置(好比:type=「JDBC」)。
數據源的配置(好比:type=「POOLED」)。
java
事務管理器(transactionManager)
- 事務管理器有倆種
- JDBC – 這個配置直接使用了 JDBC 的提交和回滾設施,它依賴從數據源得到的鏈接來管理事務做用域。
- MANAGED – 這個配置幾乎沒作什麼。它從不提交或回滾一個鏈接,而是讓容器來管理事務的整個生命週期(好比 JEE 應用服務器的上下文)。 默認狀況下它會關閉鏈接。因此不多用它
- 咱們常常默認使用的就是JDBC
數據源(dataSource)
- dataSource 元素使用標準的 JDBC 數據源接口來配置 JDBC 鏈接對象的資源。
- 有三種內建的數據源類型
- UNPOOLED– 這個數據源的實現會每次請求時打開和關閉鏈接。雖然有點慢,但對那些數據庫鏈接可用性要求不高的簡單應用程序來講,是一個很好的選擇。
- POOLED– 這種數據源的實現利用「池」的概念將 JDBC 鏈接對象組織起來,避免了建立新的鏈接實例時所必需的初始化和認證時間。 這種處理方式很流行,能使併發 Web 應用快速響應請求。
- JNDI – 這個數據源實現是爲了能在如 EJB 或應用服務器這類容器中使用,容器能夠集中或在外部配置數據源,而後放置一個 JNDI 上下文的數據源引用。
- 咱們常常默認使用的就是POOLED
映射器說明(mappers)
- 使用mappers元素要綁定咱們的映射器文件
- 最經常使用的就是使用相對於類路徑的資源引用, 使用這個很自由, 直接綁定映射器
<mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers>
- 使用映射器接口實現類的徹底限定類名, 使用這個必須保映射器.xml文件和接口實體類在同一個目錄下並且必須是同名的
<mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <mapper class="org.mybatis.builder.BlogMapper"/> <mapper class="org.mybatis.builder.PostMapper"/> </mappers>
- 將包內的映射器文件實現所有註冊進來成爲映射器, 使用這個要求和上述同樣必須保映射器.xml文件和接口實體類在同一個目錄下並且必須是同名的
<mappers> <package name="org.mybatis.builder"/> </mappers>