本文主要講幾個xml配置屬性: 其都寫在mybatis配置文件中
## 1.properties屬性:其作用主要是可以動態(tài)引進(jìn)外部的配置文件中的相關(guān)配置
? ? ? ? ? resource:引入類路徑下的資源
? url:引入網(wǎng)絡(luò)路徑或者磁盤路徑下的資源
`<properties resource="dbconfig.properties"></properties>`
并且在類路徑下創(chuàng)建對應(yīng)的配置文件dbconfig.properties
```
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.1.61:3306/mybatis_learn
jdbc.username=root
jdbc.password=123456
orcl.driver=oracle.jdbc.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.username=scott
orcl.password=123456
```
然后將mybatis-config.xml中的數(shù)據(jù)庫配置進(jìn)行更改即可:
```
<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>
```
*如果屬性在不只一個地方進(jìn)行了配置,那么 MyBatis 將按照下面的順序來加載*
- 在 properties 元素體內(nèi)指定的屬性首先被讀取。
- 然后根據(jù) properties 元素中的 resource 屬性讀取類路徑下屬性文件或根據(jù) url 屬性指定的路徑讀取屬性文件,并覆蓋已讀取的同名屬性。
- 最后讀取作為方法參數(shù)傳遞的屬性,并覆蓋已讀取的同名屬性。
*總結(jié):通過方法參數(shù)傳遞的屬性具有最高優(yōu)先級,resource/url 屬性中指定的配置文件次之,最低優(yōu)先級的是 properties 屬性中指定的屬性。*
## 2.settings設(shè)置:
該系列設(shè)置主要用來改變mybatis的行為,是極其重要的設(shè)置。截取幾個屬性展示如下:

```
//在這里 我們設(shè)置了開啟駝峰命名,這樣子在保證命名規(guī)范的情況下就無需再在sql中使用別名了
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
```
## 3.typeAliases:別名處理器
### 1.typeAlias:為某個java類型起別名
? type:指定要起別名的類型全類名;默認(rèn)別名就是類名小寫;
? alias:指定新的別名
### 2.批量起別名時,只需定義JavaBean的包名即可
? ? ? ? package:為某個包下的所有類批量起別名
? ? ? ? name:包名
? ? ? ? 批量起別名的情況下,使用@Alias注解為某個類型指定新的別名
這樣,就可以在sql映射文件中將resultType寫類的別名即可(不區(qū)分大小寫);當(dāng)然,還是推薦使用全類名的方式,便于定位。
##? 4.typeHandlers:類處理器:將Java中的類和數(shù)據(jù)庫的類型做映射,先不介紹
## 5.environments: 環(huán)境配置,可以配置生產(chǎn)環(huán)境和開發(fā)環(huán)境.default:指定一種環(huán)境,可以快速切換。
? ? ? environment:配置一個具體的環(huán)境信息,必須有兩個標(biāo)簽:
? ? ? ? ? ** id;唯一標(biāo)識;transactionManager:事務(wù)管理器;**
? ? ? ? ? 其中:type:事務(wù)管理器類型;
? ? ? ? ? ? ? ? ? ? ? ? JDBC(JdbcTransactionFactory):直接使用JDBC的事務(wù)管理
? ? ? ? ? ? ? ? ? ? ? ? MANAGED(ManagedTransactionFactory)
? ? ? ? 自定義事務(wù)管理器:實現(xiàn)TransactionFactory接口.type指定為全類名
? ? ? ? ? dataSource:數(shù)據(jù)源;
type:數(shù)據(jù)源類型;UNPOOLED(UnpooledDataSourceFactory)
|POOLED(PooledDataSourceFactory)
|JNDI(JndiDataSourceFactory)
自定義數(shù)據(jù)源:實現(xiàn)DataSourceFactory接口,type是全類名
## 6.databaseIdProvider:支持多數(shù)據(jù)庫廠商的
? ? mybatis可以支持你配置多個數(shù)據(jù)庫,配置方式與環(huán)境配置類似:
? ? type="DB_VENDOR":VendorDatabaseIdProvider,作用就是得到數(shù)據(jù)庫廠商的標(biāo)識(驅(qū)動
? ? ? ? ? ? ? ? getDatabaseProductName()),mybatis就能根據(jù)數(shù)據(jù)庫廠商標(biāo)識來執(zhí)行不同的sql;
MySQL,Oracle,SQL Server,xxxx
## 7.mappers:映射器,綁定你自己寫的sql配置文件
? ? ? mapper:注冊一個sql映射
注冊配置文件
resource:引用類路徑下的sql映射文件mybatis/mapper/EmployeeMapper.xml
url:引用網(wǎng)路路徑或者磁盤路徑下的sql映射文件file:///var/mappers/AuthorMapper.xml
注冊接口
class:引用(注冊)接口,
? ? ? 1、有sql映射文件,映射文件名必須和接口同名,并且放在與接口同一目錄下;
? ? 2、沒有sql映射文件,所有的sql都是利用注解寫在接口上;
? ? ? 推薦:
比較重要的,復(fù)雜的Dao接口我們來寫sql映射文件
不重要,簡單的Dao接口為了開發(fā)快速可以使用注解;
最后,貼一下代碼:
mybatis-config.xml
```
<?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>
<properties resource="dbconfig.properties"/>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<!--<typeAlias type="com.mybatis.com.mybatis.learn.dao.bean.Employee" alias="emp"></typeAlias>-->
<package name="com.mybatis.learn.bean"/>
</typeAliases>
<environments default="development">
<environment id="development">
<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="produce">
<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>
<databaseIdProvider type="DB_VENDOR">
<!-- 為不同的數(shù)據(jù)庫廠商起別名 -->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>
<!-- 將我們寫好的sql映射文件(EmployeeMapper.xml)一定要注冊到全局配置文件(mybatis-config.xml)中 -->
<mappers>
<!--<mapper resource="EmployeeMapper.xml"/>-->
<!--<mapper class="com.mybatis.com.mybatis.learn.dao.dao.EmployeeAnnotationMapper"></mapper>-->
<package name="com.mybatis.learn.dao"/>
</mappers>
</configuration>
```
注解Mapper:
```
package com.mybatis.learn.dao;
import com.mybatis.learn.bean.Employee;
import org.apache.ibatis.annotations.Select;
public interface EmployeeAnnotationMapper {
? ? @Select(" select id, last_name lastName, gender, email from tbl_employee where id = #{id}")
? ? public Employee getEmpByEmpId(Integer id);
}
```