mybatis-config.xml配置

學習一個框架,必須詳細的瞭解其配置文件,並經過必定的源碼分析才能更靈活的運用,根據本身的項目實現一些特殊的、自定義的功能,下面詳細看看Mybatis的全局配置文件 java

<?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">

<!-- 配置裏面用到大寫的字符串常量,都在Mybatis在給特定的類啓的別名,能夠在org.apache.ibatis.session.Configuration的構造函數中找到 -->
<configuration>
	<!-- properties標籤:定義外部配置文件,好比數據庫配置
		resource:類路徑下的配置文件
		url:網絡路徑或者磁盤路徑下的配置文件
	 -->
	<properties resource="jdbc.properties" ></properties>
	<!-- 
		該標籤包含了不少重要的配置,好比緩存等
	 -->
	<settings>
		<!-- mapUnderScoreToCamelCase:數據庫字段中的下劃線加其後的第一字母讀取出來後去掉下劃線並字母大寫,如:first_name變成firstName -->
		<setting name="mapUnderscoreToCamelCase" value="true" />
	</settings>
	<!-- 類型與別名映射 -->
	<typeAliases>
		<!-- package和typeAlias標籤只能同時存在一個 -->
		<!-- package標籤:將包及其子包下面全部的類所有映射爲類名小寫的別名,若是存在衝突的別名,在java類中使用@alias註解換一個別名 -->
		<!-- <package name=""/> -->
		
		<!-- typeAlias標籤:將一個類名映射爲別名 -->
		<typeAlias type="com.jv.bean.Employee" alias="employee"/>
	</typeAliases>
	<!-- 
		environments:環境們,Mybatis能夠配置多種環境 ,default屬性指定使用某種環境。能夠達到快速切換環境。
		好比同一套代碼的開發環境、測試環境、生產環境,甚至還有不一樣類型的數據庫
		下面的配置沒有針對使用場景來配置,而是爲了測試Mybatis對不一樣類型數據庫支持,配置了兩種場景,分別是Oracle和MySQL	
	-->
	<environments default="dev_oracle">
		<!-- 
			environment:配置一個具體的環境信息;必須有兩個標籤;id表明當前環境的惟一標識
		-->
		<environment id="dev_mysql">
			<!-- 
				transactionManager:事務管理器;
					type:事務管理器的類型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
				
				自定義事務管理器:實現TransactionFactory接口.type指定爲全類名
			-->
			<transactionManager type="JDBC" />
			<!-- 
				dataSource:數據源;
					type:數據源類型;UNPOOLED(UnpooledDataSourceFactory)
									|POOLED(PooledDataSourceFactory)
									|JNDI(JndiDataSourceFactory)
					自定義數據源:實現DataSourceFactory接口,type是全類名
			 -->
			<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>
		
		<!-- 這個環境配置爲oracle -->
		<environment id="dev_oracle">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${ora.driver}" />
				<property name="url" value="${ora.url}" />
				<property name="username" value="${ora.username}" />
				<property name="password" value="${ora.password}" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 
		databaseIdProvider:支持多數據庫廠商的;
		 	type="DB_VENDOR":VendorDatabaseIdProvider是DB_VENDOR映射的實現類
		 		做用:就是獲得數據庫廠商的標識,調用getDatabaseProductName()獲得數據庫名稱,如Oracle(MySQL,SQL Server等其餘名字)而後和配置中property比對,拿
		 		到oracle,在與sql映射文件中<select>標籤中的databaseid中的值匹配,Mybatis就能根據數據庫廠商標識來執行不一樣的sql;
	-->
	<databaseIdProvider type="DB_VENDOR">
		<property name="MySQL" value="mysql"/>
		<property name="Oracle" value="oracle"/>
	</databaseIdProvider>
	<!-- 將配置的SQL映射文件配置到全局配置文件中 -->
	<mappers>
		<!-- 
			註冊一個SQL映射文件到全局配置文件中 
			1.註冊配置文件
				resource:類路徑下的配置文件
				url:網絡路徑或者磁盤路徑下的配置文件
		-->
		<mapper resource="EmployeeMapper.xml" />
		<!--  
			註冊接口
			1.必須將SQL映射配置文件放到接口類相同的目錄,這樣Mybatis才能根據Mapper的名字找到對應的SQL映射文件
			或者
			2.不使用SQL映射文件,在類中使用註解把SQL寫到對應方法上
			如:
				public interface EmployeeMapperAnnotation{
					@select("select * from employee where id = #{id}")
					public Employee getEmployeeById(Integer id);
				}
		-->
		<mapper class="com.jv.dao.EmployeeMapper" />
		
		
		<!--  
			批量註冊,爲了方便維護,一般開發人員喜歡講配置文件和類分開,可是分開了就不能使用該功能,有一個比較討巧的作法
			在新建的配置文件根目錄下,建立一個和類同樣的目錄,最終經過編譯打包後配置文件和CLASS文件是在同一個目錄的
		-->
		<package name="com.jv.dao.batch"/>
	</mappers>
	
</configuration>

由於mybatis常常和其餘框架整合,所以在全局配置文件裏面用到<properties>和<datasource>標籤概率不多mysql

<settings>標籤裏面包含了不少重要的屬性,在不斷學習中會陸續介紹,最後會單獨列一篇作彙總sql

<typeAliases>標籤的配置很實用,好比常常實用的實體類若是有更新位置或者類名,那麼使用別名就像常量同樣方便,可是它也有很差的一面,即在閱讀代碼的時候,若是想經過mapper配置文件快速定位到類,就好比去全局配置文件翻具體的類。數據庫

另外:別名千萬不要和Mybatis內定的別名衝突,即基本類型和經常使用類型的:apache

相關文章
相關標籤/搜索