MyBatis3系列__03幾個屬性總結(jié)

本文主要講幾個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è)置。截取幾個屬性展示如下:

![image](https://user-images.githubusercontent.com/32826769/54729321-dcfd4a00-4bbd-11e9-9fa6-395968c1f9cd.png)

```

//在這里 我們設(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);

}

```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容