1. 程式人生 > >Mybatis全域性配置檔案中重要註解說明

Mybatis全域性配置檔案中重要註解說明

    <!--注意:xml中的標籤是有先後順序的,將滑鼠放在configuration標籤上,彈出框的末尾可以檢視先後順序-->

1、<properties>

mybatis可以使用properties來引入外部properties配置檔案的內容;
        resource:引入類路徑下的資源
        url:引入網路路徑或者磁碟路徑下的資源

<properties resource="dbconfig.properties"></properties>

2、<settings>

settings包含很多重要的設定項
        setting:用來設定每一個設定項
            name:設定項名
            value:設定項取值

	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>

3、<typeAliases>

typeAliases:別名處理器:可以為我們的java型別起別名 ,別名不區分大小寫

作用:當xml檔案中需要引用全類名的地方可以使用別名

其中包含三種寫法,具體參照註釋說明

	<typeAliases>
		<!-- 1、typeAlias:為某個java型別起別名
				type:指定要起別名的型別全類名;預設別名就是類名小寫;employee
				alias:指定新的別名
		 -->
		<!-- <typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"/> -->
		
		<!-- 2、package:為某個包下的所有類批量起別名 
				name:指定包名(為當前包以及下面所有的後代包的每一個類都起一個預設別名(類名小寫),)
		-->
		<package name="com.atguigu.mybatis.bean"/>
		
		<!-- 3、批量起別名的情況下,使用@Alias註解為某個型別指定新的別名 -->
	</typeAliases>

給類名起別名的情況:

可百度檢視mybatis中預設的別名;

4、 <environments>

environments:環境們,mybatis可以配置多種環境 ,default指定使用某種環境。可以達到快速切換環境。
            environment:配置一個具體的環境資訊;必須有兩個標籤;id代表當前環境的唯一標識
                transactionManager:事務管理器;
                    type:事務管理器的型別;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
                        自定義事務管理器:實現TransactionFactory介面.type指定為全類名
                
            dataSource:資料來源;
                    type:資料來源型別;UNPOOLED(UnpooledDataSourceFactory)
                                |POOLED(PooledDataSourceFactory)
                                |JNDI(JndiDataSourceFactory)
                    自定義資料來源:實現DataSourceFactory介面,type是全類名

	<environments default="dev_mysql">
		<environment id="dev_mysql">
			<transactionManager type="JDBC"></transactionManager>
			<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="dev_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>

5、<databaseIdProvider>

databaseIdProvider:支援多資料庫廠商的;
         type="DB_VENDOR":VendorDatabaseIdProvider
             作用就是得到資料庫廠商的標識(驅動getDatabaseProductName()),mybatis就能根據資料庫廠商標識來執行不同的sql;
             MySQL,Oracle,SQL Server,xxxx

	<databaseIdProvider type="DB_VENDOR">
		<!-- 為不同的資料庫廠商起別名 -->
		<property name="MySQL" value="mysql"/>
		<property name="Oracle" value="oracle"/>
		<property name="SQL Server" value="sqlserver"/>
	</databaseIdProvider>

然後mapper.xml中指定使用哪個資料庫,就會去查詢哪個資料庫

如<select>中指定的databaseId="mysql",就指定該查詢語句查mysql資料庫中的表

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.dao.EmployeeMapper">
<!-- 
namespace:名稱空間;指定為介面的全類名
id:唯一標識
resultType:返回值型別
#{id}:從傳遞過來的引數中取出id值

public Employee getEmpById(Integer id);
 -->
 	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
		select * from tbl_employee where id = #{id}
	</select>
	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
		databaseId="mysql">
		select * from tbl_employee where id = #{id}
	</select>
	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
		databaseId="oracle">
		select EMPLOYEE_ID id,LAST_NAME	lastName,EMAIL email 
		from employees where EMPLOYEE_ID=#{id}
	</select>
</mapper>

6、<mappers>

<!-- 將我們寫好的sql對映檔案(EmployeeMapper.xml)一定要註冊到全域性配置檔案(mybatis-config.xml)中 -->

將sql對映註冊到全域性配置中

	<mappers>
		<!-- 
			mapper:註冊一個sql對映 
				註冊配置檔案
				resource:引用類路徑下的sql對映檔案
					mybatis/mapper/EmployeeMapper.xml
				url:引用網路路徑或者磁碟路徑下的sql對映檔案
					file:///var/mappers/AuthorMapper.xml
					
				註冊介面
				class:引用(註冊)介面,
					1、有sql對映檔案,對映檔名必須和介面同名,並且放在與介面同一目錄下;
					2、沒有sql對映檔案,所有的sql都是利用註解寫在介面方法上;
					推薦:
						比較重要的,複雜的Dao介面我們來寫sql對映檔案
						不重要,簡單的Dao介面為了開發快速可以使用註解;
		-->
		<!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml"/> -->
		<!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> -->
		
		<!-- 批量註冊:注意:mapper介面檔案和mapper.xml檔案需要在同一目錄下 ,不過在idea中,
		配置檔案下新建一個包路徑和mapper介面一樣的路徑來儲存mapper.xml檔案,這樣方便檢視,但編譯時,其實都放在了一個路徑下-->
		<package name="com.atguigu.mybatis.dao"/>
	</mappers>
</configuration>

當註冊資料庫為介面時,sql語句如下,使用註解寫在介面的方法上:

package com.atguigu.mybatis.dao;

import org.apache.ibatis.annotations.Select;

import com.atguigu.mybatis.bean.Employee;

public interface EmployeeMapperAnnotation {
	
	@Select("select * from tbl_employee where id=#{id}")
	public Employee getEmpById(Integer id);
}