快速學習-MyBatis全局配置文件

  • 2020 年 2 月 17 日
  • 筆記

第3章 MyBatis全局配置文件

3.1 MyBatis全局配置文件簡介

  1. The MyBatis configuration contains settings and properties that have a dramatic effect on how MyBatis behaves. MyBatis 的配置文件包含了影響 MyBatis 行為甚深的設置(settings)和屬性(properties)資訊。
  2. 文件結構如下:
configuration 配置  properties 屬性  settings 設置  typeAliases 類型命名  typeHandlers 類型處理器  objectFactory 對象工廠  plugins 插件  environments 環境  environment 環境變數  transactionManager 事務管理器  dataSource 數據源  databaseIdProvider 資料庫廠商標識  mappers 映射器

3.2 properties屬性

  1. 可外部配置且可動態替換的,既可以在典型的 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>
  1. 然而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>
  1. 在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 別名處理

  1. 類型別名是為 Java 類型設置一個短的名字,可以方便我們引用某個類。
<typeAliases>  	 	<typeAlias type="com.atguigu.mybatis.beans.Employee"                     alias="emp"/>  </typeAliases>
  1. 類很多的情況下,可以批量設置別名這個包下的每一個類創建一個默認的別名,就是簡單類名小寫
<typeAliases>  	 	<package name="com.atguigu.mybatis.beans"/>  </typeAliases>
  1. MyBatis已經取好的別名

3.5 environments 環境配置

  1. MyBatis可以配置多種環境,比如開發、測試和生產環境需要有不同的配置
  2. 每種環境使用一個environment標籤進行配置並指定唯一標識符
  3. 可以通過environments標籤中的default屬性指定一個環境的標識符來快速的切換環境
  4. 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>
  1. transactionManager
type:  JDBC | MANAGED | 自定義  	JDBC:使用了 JDBC 的提交和回滾設置,依賴於從數據源得到的連接來管理事務范		  圍。 JdbcTransactionFactory  	MANAGED:不提交或回滾一個連接、讓容器來管理事務的整個生命周期(比如 JEE 		  應用伺服器的上下文)。 ManagedTransactionFactory  	自定義:實現TransactionFactory介面,type=全類名/別名
  1. dataSource
type:  UNPOOLED | POOLED | JNDI | 自定義  	UNPOOLED:不使用連接池, UnpooledDataSourceFactory  	POOLED:使用連接池, PooledDataSourceFactory  	JNDI: 在EJB 或應用伺服器這類容器中查找指定的數據源  	自定義:實現DataSourceFactory介面,定義數據源的獲取方式。

7)實際開發中我們使用Spring管理數據源,並進行事務控制的配置來覆蓋上述配置

3.6 mappers 映射器

  1. 用來在mybatis初始化的時候,告訴mybatis需要引入哪些Mapper映射文件
  2. 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>
  1. 使用批量註冊,這種方式要求SQL映射文件名必須和介面名相同並且在同一目錄下
<mappers>  		<package name="com.atguigu.mybatis.dao"/>  </mappers>

Tags: