MyBatis日記(三):戲說MyBatis配置文件

properties標籤

properties標籤能夠用來加載別的配置文件,好比能夠加載數據庫的配置文件,jdbc.properties。mysql

下面是jdbc.propertiessql

1 jdbc.driverClassName=com.mysql.jdbc.Driver 2 jdbc.url=jdbc:mysql://localhost:3306/db_mbre
3 jdbc.username=root 4 jdbc.password=123456

而後在全局的配置文件MyBatis-config.xml中引入該配置文件:數據庫

 1 <properties resource="jdbc.properties" /> 緩存

引入之後就能夠在全局配置文件中配置數據庫時,使用這些信息了:mybatis

1 <dataSource type="POOLED">
2     <property name="driver" value="${jdbc.driverClassName}" />
3     <property name="url" value="${jdbc.url}" />
4     <property name="username" value="${jdbc.username}" />
5     <property name="password" value="${jdbc.password}" />
6 </dataSource>

加載properties的順序:app

一、  先加載<properties>標籤下的property標籤,觀察有沒有對應的鍵值對dom

二、  而後在加載properties的resource屬性指定的配置文件。ide

typeAlias標籤

MyBatis默認支持的別名:測試

別名ui

映射的類型

_byte

byte

_long

long

_short

short

_int

int

_integer

int

_double

double

_float

float

_boolean

boolean

string

String

byte

Byte

long

Long

short

Short

int

Integer

integer

Integer

double

Double

float

Float

boolean

Boolean

date

Date

decimal

BigDecimal

bigdecimal

BigDecimal

自定義別名

MyBatis對於基本的數據類型定義了別名,咱們能夠爲咱們本身建立的pojo類定義別名,定義別名採用的是<typeAliases>標籤:

1 <typeAliases>
2     <typeAlias alias="Student" type="com.Aiden.domain.Student" />
3 </typeAliases>

定義完別名之後,就能夠在mapper文件中使用別名了:

批量定義別名,直接定義包名,包下面的類的別名默認爲類名。首字母大小寫便可。

Mapper標籤

Mapper標籤用於引入mapper配置文件:

<mapper resource=」」> 使用相對於類路徑的資源

<mapper url=」」> 使用徹底限定路徑

<mapper class=」」> 使用mapper接口的全限定名(此方法要求mapper接口和mapper映射文件要名稱相同,且放在同一個目錄下面)

<package name=」」> 註冊指定包下的全部映射文件(此方法要求mapper接口和mapper映射文件要名稱相同,且放在同一個目錄下面)

environment標籤

MyBatis能夠配置多種環境。你如開發時的環境、測試時的環境。這樣能夠將SQL映射應用於多種數據庫之中。(注:能夠配置多種環境,但每一個數據庫對應一個SQLSessionFactory,若是想鏈接兩個數據庫,則須要建立兩個SqlSessionFactory實例,每一個數據庫對應一個)。

爲明確建立哪一種環境,能夠將它做爲可選的參數傳遞給SQLSessionFactoryBuilder。

可接受環境配置的兩個方法簽名是:

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment);

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,environment,properties);

若是環境被忽略,那麼默認環境將會被加載,按照以下方式進行:

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader);

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,properties);

配置以下:

 1 <environments default="development">
 2         <environment id="development">
 3             <transactionManager type="JDBC" />
 4             <dataSource type="POOLED">
 5                 <property name="driver" value="${jdbc.driverClassName}" />
 6                 <property name="url" value="${jdbc.url}" />
 7                 <property name="username" value="${jdbc.username}" />
 8                 <property name="password" value="${jdbc.password}" />
 9             </dataSource>
10         </environment>
11         <environment id="test">
12             <transactionManager type="JDBC" />
13             <dataSource type="POOLED">
14                 <property name="driver" value="${jdbc.driverClassName}" />
15                 <property name="url" value="${jdbc.url}" />
16                 <property name="username" value="${jdbc.username}" />
17                 <property name="password" value="${jdbc.password}" />
18             </dataSource>
19         </environment>
20     </environments>

Settings

MyBatis全局配置參數,全局參數將會影響MyBatis的運行行爲。好比:開啓二級緩存、開啓延時加載。具體可配置狀況以下:(摘自《深刻淺出MyBatis技術原理與實踐》)

POJO的映射文件(mapper.xml)

Mapper.xml映射文件中定義了操做數據庫的SQL,每一個數據庫SQL 是一個statement ,映射文件是MyBatis的核心。

ParameterType(輸入類型)

經過parameterType指定輸入參數的類型,類型能夠是簡單類型、hashmap、pojo的包裝類型。#{}實現的是向prepareStatement中的預處理語句中設置參數值,SQL語句中#{}表示一個佔位符。例如:

使用佔位符#{}能夠有效防止SQL注入,在使用時不須要關心參數值的類型,MyBatis會自動進行Java類型和jdbc類型的轉換。#{}能夠接收簡單類型值或pojo屬性值,若是parameterType傳輸單個簡單屬性值,#{}括號能夠是value或其餘名稱。

resultType

使用resultType能夠進行輸出映射,只有查詢出來的列名和pojo中的屬性名一致,才能夠映射成功。若是查詢出來的列名和pojo中的屬性名所有不一致,就不會建立pojo對象。可是隻要查詢出來的列名和pojo中的屬性有一個一致,就會建立pojo對象。

resultType能夠輸出簡單類型。例如查詢用戶信息的綜合查詢列表總數,經過查詢總數和上邊用戶綜合查詢列表才能夠實現分頁。

 

resultMap

mybatis中能夠使用resultMap完成高級輸出結果映射。若是查詢出來的列名和定義的pojo屬性名不一致,就能夠經過定義一個resultMap對列名和pojo屬性名之間做一個映射關係。而後使用resultMap做爲statement的輸出映射類型。resultMap能夠實現將查詢結果映射爲複雜類型的pojo。

相關文章
相關標籤/搜索