mybatis核心配置文件詳解

mybatis核心配置信息必須嚴格按照格式標準進行配置

配置名稱 配置含義 配置簡介
configuration 包裹所有配置文件 整個配置文件的頂級標籤
properties 屬性 該標籤可以引入外部配置的屬性,也可以自己配置。該配置標籤所在的同一個配置文件均可引用此配置中的屬性
setting 全局配置參數 用來配置一些改變運行時行爲的信息,例如是否使用緩存機制,是否使用延遲加載,是否使用錯誤機制等。並且可以設置最大併發請求數量、最大併發事務數量,以及是否啓動命名空間等
typeAliases 類型別名 用來設置一些別名來代替Java的長類型聲明(如java.lang.int變成int),減少配置編碼的冗餘
typeHandlers 類型處理器 將SQL中返回的數據庫類型轉換成相應Java類型的處理器配置
objectFactory 對象工廠 實例化目標類的工廠類配置
plugins 插件 可以通過插件修改Mybatis的核心行爲,例如對語句執行的某一點進行攔截調用
environments 環境集合屬性變量 數據庫環境信息的集合。在一個配置文件中,可以有多種數據庫環境集合,這樣可以使Mybatis將SQL同時映射至多個數據庫
environment 環境子屬性對象 數據庫環境配置的詳細配置
transactionManager 事務管理 指定Mybatis的事務管理器
dataSource 數據源 使用其中的type指定數據源的連接類型,在標籤對中可以使用property屬性指定數據庫連接池的其他信息
mappers 映射器 配置SQL映射文件的位置,告知MyBatis去哪裏加載SQL映射配置
<?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>
  	<!-- 1.properties屬性引入外部配置文件 -->
  	<properties resource="com/mybatis/example/config.properties">
  		<!-- property裏面的屬性全局均可使用 -->
  		<property name="username" value="root"/>
  		<property name="pasword" value="123"/>
  	</properties>
  	<!--2. 全局配置參數 -->
  	<settings>
  		<!-- 設置是否啓動緩存 -->
  		<setting name="cacheEnabled" value="true"/>
  		<!-- 設置是否啓用懶加載 -->
  		<setting name="lazyLoadingEnabled" value="true"/>
  	</settings>
  	<!-- 3.別名設置 -->
  	<typeAliases>
  		<typeAlias type="com.mybatis.domain.User" alias="user"/>
  		<typeAlias type="com.mybatis.domain.Customer" alias="customer"/>
  	</typeAliases>
  	<!-- 4.類型轉換器 -->
  	<typeHandlers>
  		<!-- 一個簡單類型轉換器 -->
  		<typeHandler handler="com.mybatis.example.ExampleTypeHandler"/>
  	</typeHandlers>
  	<!-- 5.對象工廠 -->
  	<objectFactory type="com.mybatis.example.ExampleObjectFactory">
  		<!-- 對象工廠注入的參數 -->
  		<property name="someProperty" value="100"/>
  	</objectFactory>
  	<!-- 6.插件 -->
  	<plugins>
  		<plugin interceptor="com.mybatis.example.ExamplePlugin">
  			<property name="someProperty" value="100"/>
  		</plugin>
  	</plugins>
  	<!-- 7.environments數據庫環境配置 -->
  	<!-- 和Spring整合後environments配置將配廢除 -->
  	<environments default="development">
  		<environment id="development">
  			<!-- 使用JDBC事務管理 -->
  			<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>
  	</environments>
  	
  	<!-- 8.加載映射文件 -->
  	<mappers>
  		<mapper resource="com/mybatis/mapper/UserMapper.xml" />
  		<mapper resource="com/mybatis/mapper/CustomerMapper.xml" />
  	</mappers>
  </configuration>

各個配置參數的詳解:
properties參數用來引入一個外部屬性文件:
引入一個config.properties文件

<!-- 1.properties屬性引入外部配置文件 -->
<properties resource="com/mybatis/example/config.properties">
	<!-- property裏面的屬性全局均可使用 -->
	<property name="username" value="root"/>
	<property name="pasword" value="123"/>
</properties>

config.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///ssm
username=root
password=123

properties標籤引入它避免了數據庫信息的“硬編碼”,當需要連接其他數據庫的時候,只需要連接其他數據庫時,只需要更改數據庫的配置文件即可。
當propertieszhong you property子標籤時,並且子標籤配置了引的屬性文件的屬性值,這時取的就是property子標籤中的value值。
在properties變遷中引入的配置文件信息以及property子標籤中的配置的信息,在其他標籤中可以使用"&quot;&quot;{}&quot;佔位符的方式來獲取,在&quot;{}"中填寫引入的配置文件中參數的name或者property子標籤的name。
例如:

<dataSource type="POOLED">
	<property name="driver" value="${driver}"/>
	<property name="url" value="${url}"/>
	<property name="username" value="${username}"/>
	<property name="password" value="${password}"/>
</dataSource>

setting配置影響Mybatis框架在運行時的一些行爲,在這就不詳細介紹了,只需大致瞭解setting中包含了哪些設置,然後在需要用的時候,查看setting的文檔即可。
setting配置常用來實現緩存、延遲加載和分頁設置。
Setting配置的樣例:
https://blog.csdn.net/qq_37745636/article/details/98953127

typeAliases配置
在MyBatis的SQL映射配置文件中,常使用parameterType、resultType之類的參數設置SQL語句的輸入/輸出參數,一般參數都是一個java類型的數據,有基本數據類型或引用數據類型,單數一般都要聲明該類型的全路徑名稱,例如“java.lang.String”、“com.mybatis.domain.User”。
通過在typeAliases配置中聲明該類的全路徑名稱,然後給它一個別名,在SQL映射配置文件中指定輸入/輸出參數類型時使用別名。

<typeAliases>
	<typeAlias type="com.mybatis.domain.User" alias="user"/>
	<typeAlias type="com.mybatis.domain.Customer" alias="customer"/>
</typeAliases>

MyBatis還提供了批量定義別名的方法,指定包名即可,程序會爲該包下的所有包裝類加上別名。定義別名的規範就是對應包裝類的類名首字母變成小寫。

<typeAliases>
	<package name="com.mybatis.domain" />
</typeAliases>

還可以通過註解的方式來實現

@Alias("user")
public class User {
}

Mybatis已經爲Java的常見類型默認指定了別名,可以直接使用。

別名 映射的類型
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string java.lang.String
byte java.lang.Byte
long java.lang.Long
short java.lang.Short
int java.lang.Integer
integer java.lang.Integer
double java.lang.Double
boolean java.lang.Boolean
date java.util.Date
decimal java.math.BigDecimal
bigdecimal java.math.BigDecimal
object java.lang.Object
map java.util.Map
hashmap java.util.HashMap
list java.util.List
arraylist java.util.ArrayList
collection java.util.Collection
iterator java.util.Iterator

可以從上面發現規律: 基本數據類型的別名是“_”加上基本數據類型的名稱,引用數據類型的別名是數據類型的名稱首字母小寫。
建議:在實體類中定義屬性時儘量使用引用數據類型。
在返回值是個List集合的時候,ResultType中還是寫返回的list集合中對象的別名。

environments配置環境

<!-- 7.environments數據庫環境配置 -->
<!-- 和Spring整合後environments配置將配廢除 -->
<environments default="development">
<environment id="development">
	<!-- 使用JDBC事務管理 -->
	<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>
</environments>

environments中的default屬性配置默認的環境,而environment中的id則是這個環境的id。
數據管理器(transactionManager)有兩種類型:分別是JDBC和MANAGED。配置爲JDBC,相當於直接使用JDBC的提交和回滾設置。配置爲MANAGED,則不提交和回滾連接,而是有容器來管理事務的生命週期。
關於數據源(dataSource),在mybatis中有三種內建的數據源類型:分別是“UNPOOLED”、“POOLED”,與“JNDI”。其中UNPLOOED設置每次請求時打開和關閉連接,而POOLED可以設置一個管理數據庫連接的資源池,用來合理控制數據庫的連接與關閉次數,利用“池”的概念將JDBC連接對象組織起來。而JNDI則配置連接外部數據源的信息。

mappers配置分析
mappers標籤下有多個mapper標籤,每一個mapper標籤中配置的都是一個獨立的Mapper映射配置文件的路徑。有以下幾種配置方式:
第一種,使用相對路徑進行配置:

<mappers>
	<mapper resource="com/mybatis/mappers/UserMapper.xml" />
</mappers>

第二種,使用絕對路徑進行配置:

<mappers>
	<mapper url="file:///var/mappers/UserMapper.xml" />
</mappers>

第三種,使用接口信息進行配置:

<mappers>
	<mapper class="com.mybatis.mappers.UserMapper" />
</mappers>

第四種,使用接口所在包進行配置:

<mappers>
	<mapper class="com.mybatis.mappers" />
</mappers>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章