快速學習-MyBatis全局配置文件
- 2020 年 2 月 17 日
- 筆記
第3章 MyBatis全局配置文件
3.1 MyBatis全局配置文件簡介
- The MyBatis configuration contains settings and properties that have a dramatic effect on how MyBatis behaves. MyBatis 的配置文件包含了影響 MyBatis 行為甚深的設置(settings)和屬性(properties)資訊。
- 文件結構如下:
configuration 配置 properties 屬性 settings 設置 typeAliases 類型命名 typeHandlers 類型處理器 objectFactory 對象工廠 plugins 插件 environments 環境 environment 環境變數 transactionManager 事務管理器 dataSource 數據源 databaseIdProvider 資料庫廠商標識 mappers 映射器
3.2 properties屬性
- 可外部配置且可動態替換的,既可以在典型的 Java 屬性文件中配置,亦可通過 properties 元素的子元素來配置
<properties> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test_mybatis" /> <property name="username" value="root" /> <property name="password" value="1234" /> </properties>
- 然而properties的作用並不單單是這樣,你可以創建一個資源文件,名為jdbc.properties的文件,將四個連接字元串的數據在資源文件中通過鍵值 對(key=value)的方式放置,不要任何符號,一條佔一行
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis_1129 jdbc.username=root jdbc.password=1234
<!-- properties: 引入外部的屬性文件 resource: 從類路徑下引入屬性文件 url: 引入網路路徑或者是磁碟路徑下的屬性文件 --> <properties resource="db.properties" ></properties>
- 在environment元素的dataSource元素中為其動態設置
<environments default="oracle"> <environment id="mysql"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments>3.3 settings設置
<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>
3.4 typeAliases 別名處理
- 類型別名是為 Java 類型設置一個短的名字,可以方便我們引用某個類。
<typeAliases> <typeAlias type="com.atguigu.mybatis.beans.Employee" alias="emp"/> </typeAliases>
- 類很多的情況下,可以批量設置別名這個包下的每一個類創建一個默認的別名,就是簡單類名小寫
<typeAliases> <package name="com.atguigu.mybatis.beans"/> </typeAliases>
- MyBatis已經取好的別名

3.5 environments 環境配置
- MyBatis可以配置多種環境,比如開發、測試和生產環境需要有不同的配置
- 每種環境使用一個environment標籤進行配置並指定唯一標識符
- 可以通過environments標籤中的default屬性指定一個環境的標識符來快速的切換環境
- environment-指定具體環境 id:指定當前環境的唯一標識 transactionManager、和dataSource都必須有
<environments default="oracle"> <environment id="mysql"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> <environment id="oracle"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${orcl.driver}" /> <property name="url" value="${orcl.url}" /> <property name="username" value="${orcl.username}" /> <property name="password" value="${orcl.password}" /> </dataSource> </environment> </environments>- transactionManager
type: JDBC | MANAGED | 自定義 JDBC:使用了 JDBC 的提交和回滾設置,依賴於從數據源得到的連接來管理事務范 圍。 JdbcTransactionFactory MANAGED:不提交或回滾一個連接、讓容器來管理事務的整個生命周期(比如 JEE 應用伺服器的上下文)。 ManagedTransactionFactory 自定義:實現TransactionFactory介面,type=全類名/別名
- dataSource
type: UNPOOLED | POOLED | JNDI | 自定義 UNPOOLED:不使用連接池, UnpooledDataSourceFactory POOLED:使用連接池, PooledDataSourceFactory JNDI: 在EJB 或應用伺服器這類容器中查找指定的數據源 自定義:實現DataSourceFactory介面,定義數據源的獲取方式。
7)實際開發中我們使用Spring管理數據源,並進行事務控制的配置來覆蓋上述配置
3.6 mappers 映射器
- 用來在mybatis初始化的時候,告訴mybatis需要引入哪些Mapper映射文件
- mapper逐個註冊SQL映射文件
resource : 引入類路徑下的文件 url : 引入網路路徑或者是磁碟路徑下的文件 class : 引入Mapper介面. 有SQL映射文件 , 要求Mapper介面與 SQL映射文件同名同位置. 沒有SQL映射文件 , 使用註解在介面的方法上寫SQL語句.
<mappers> <mapper resource="EmployeeMapper.xml" /> <mapper class="com.atguigu.mybatis.dao.EmployeeMapper"/> <package name="com.atguigu.mybatis.dao"/> </mappers>
- 使用批量註冊,這種方式要求SQL映射文件名必須和介面名相同並且在同一目錄下
<mappers> <package name="com.atguigu.mybatis.dao"/> </mappers>
