mybatis學習之SqlMapConfig.xml的詳細配置內容

mybatis的全局配置文件SqlMapConfig.xml,配置內容如下:

properties(屬性)

settings(全局配置參數)

typeAliases(類型別名)

typeHandlers(類型處理器)

objectFactory(對象工廠)

plugins(插件)

environments(環境集合屬性對象)

environment(環境子屬性對象)

transactionManager(事務管理器)

DataSource(數據源)

mappers(映射器)


properties(屬性)

需求:
將數據庫連接參數單獨配置在db.properties文件中,只需要在SqlMapConfig.xml中加載該properties即可
就不需要對數據庫的連接參數進行硬編碼了

SqlMapConfig.xml可以引用java屬性文件中的配置信息如下:

在classpath下定義db.properties文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=mysql

SqlMapConfig.xml引用如下:

 <!-- 加載屬性文件 -->
    <properties resource="db.properties"></properties>
    <!-- 和spring整合後 environments配置將廢除-->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事務管理-->
            <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>

注意: MyBatis 將按照下面的順序來加載屬性:

  在 properties 元素體內定義的屬性首先被讀取。

 然後會讀取properties 元素中resource或 url 加載的屬性,它會覆蓋已讀取的同名屬性。

  最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。

因此,通過parameterType傳遞的屬性具有最高優先級,resource或 url 加載的屬性次之,最低優先級的是 properties 元素體內定義的屬性。

建議:

不要再properties元素體內添加任何的屬性值,只這個屬性值定義在properties文件中

在properties定義的屬性名要有一定的特殊性,例如:xxx.xxx.xxx


Settings(全局參數設置)

mybatis全局配置參數,全局參數將會影響mybatis的運行行爲。

參考資料文件:mybatis-settings.xlsx(github有下)


注意:此設置設置不當會影響mybatis整體的使用,謹慎設置。 mybatis不需要進行數據庫連接優化,內置了自動調優。


typeAliases(別名)<重點>

需求:在mapper.xml中,定義了很多sataement。statement需要parameterType來指定輸入參數的類型、需要resultType來指定輸出結果的映射類型

若果在指定類型時,輸入類型的全路徑,不方便開發,可以針對parameterType或resultType指定的類型定義一些別名,在mapper.xml中通過別名來定義他們,方便開發

mybatis內置默認支持別名

別名

映射的類型

_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 

自定義別名

單個別名的定義:

    <!--別名定義-->
    <typeAliases>
        <!--
        針對單個別名的定義
        type:類型的路徑
        alias:別名
        -->
        <typeAlias type="pojo.User" alias="user" />
    </typeAliases>
引用別名:

    <select id="findUserById" parameterType="int" resultType="user">
        SELECT * FROM USER WHERE id = #{id}
    </select>

批量別名的定義(更常用):

        <!--
        針對批量別名的定義
        指定報名:mybatis會自動的掃描包中的pojo類,別名就是類名,首字母大寫或小寫都可以
        -->
        <package name="pojo"/>

引用別名:

    <select id="findUserById" parameterType="int" resultType="user">
        SELECT * FROM USER WHERE id = #{id}
    </select>

    <select id="findUserById" parameterType="int" resultType="User">
        SELECT * FROM USER WHERE id = #{id}
    </select>

都可以


typeHandlers(類型處理器)


mybatis中是通過typeHandlers來完成JDBC類型和JAVA類型的轉換。如:java類型的Stirng轉爲JDBC類型的varchar

一般不需要定義,通常情況下mybatis默認提供的類型處理器已經滿足日常開發的需要

mybatis自帶的類型處理器基本上滿足日常需求,不需要單獨定義。

mybatis支持類型處理器:

類型處理器

Java類型

JDBC類型

BooleanTypeHandler

Boolean,boolean

任何兼容的布爾值

ByteTypeHandler

Byte,byte

任何兼容的數字或字節類型

ShortTypeHandler

Short,short

任何兼容的數字或短整型

IntegerTypeHandler

Integer,int

任何兼容的數字和整型

LongTypeHandler

Long,long

任何兼容的數字或長整型

FloatTypeHandler

Float,float

任何兼容的數字或單精度浮點型

DoubleTypeHandler

Double,double

任何兼容的數字或雙精度浮點型

BigDecimalTypeHandler

BigDecimal

任何兼容的數字或十進制小數類型

StringTypeHandler

String

CHAR和VARCHAR類型

ClobTypeHandler

String

CLOB和LONGVARCHAR類型

NStringTypeHandler

String

NVARCHAR和NCHAR類型

NClobTypeHandler

String

NCLOB類型

ByteArrayTypeHandler

byte[]

任何兼容的字節流類型

BlobTypeHandler

byte[]

BLOB和LONGVARBINARY類型

DateTypeHandler

Date(java.util)

TIMESTAMP類型

DateOnlyTypeHandler

Date(java.util)

DATE類型

TimeOnlyTypeHandler

Date(java.util)

TIME類型

SqlTimestampTypeHandler

Timestamp(java.sql)

TIMESTAMP類型

SqlDateTypeHandler

Date(java.sql)

DATE類型

SqlTimeTypeHandler

Time(java.sql)

TIME類型

ObjectTypeHandler

任意

其他或未指定類型

EnumTypeHandler

Enumeration類型

VARCHAR-任何兼容的字符串類型,作爲代碼存儲(而不是索引)。

mappers(映射配置)

<mapper resource="" />
通過resource來加載單個的映射文件
<mapper url="" />
使用完全限定路徑
<mapper class="" />
通過mapper接口來加載
	<!--
        通過mapper接口來加載映射文件
        需要遵循一些規範:需要將mapper接口類名和mapper.xml的文件名稱保持一致,且在一個目錄
        規範的前提:使用mapper代理的方法開發DAO
         -->
        <mapper class="mapper.UserMapper" />

<package name = "" />
批量加載mapper(推薦使用)
	<!--
        批量加載mapper
        指定mapper接口類的包名
        mybatis自動掃描該包目錄下所有的mapper接口類
        需要遵循一些規範:需要將mapper接口類名和mapper.xml的文件名稱保持一致,且在一個目錄
        使用的前提:使用mapper代理的方法開發DAO
         -->
        <package name="mapper" />


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章