SqlMapConfig.xml配置文件詳解(5)

前記:這是很早之前自學學習myBatis時的筆記,內容比較基礎,適合新手,內容基本是來自網絡,如有雷同,敬請諒解!  

    SqlMapConfig.xml配置文件詳解

     配置內容

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

1.        properties(屬性)

2.        settings(全局配置參數)

3.        typeAliases(類型別名)

4.        typeHandlers(類型處理器)

5.        objectFactory(對象工廠)

6.        plugins(插件)

7.        environments(環境集合屬性對象)

          environment(環境子屬性對象)

          transactionManager(事務管理)

          dataSource(數據源)

8.        mappers(映射器)

     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引用如下:

<!-- 加載屬性文件 -->

<propertiesresource="db.properties"/>

<environmentsdefault="development">

       <environment id="development">

           <transactionManager type="JDBC"/>

           <dataSource type="POOLED">

             <propertyname="driver"value="${jdbc.driver}"/>

             <propertyname="url"value="${jdbc.url}"/>

             <propertyname="username"value="${jdbc.username}"/>

             <propertyname="password"value="${jdbc.password}"/>

           </dataSource>

       </environment>

</environments>

properties特性:

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

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

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

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

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

建議:

不要在properties元素體內添加任何屬性值,只將屬性值定義在properties文件中。

在properties文件中定義屬性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

     Settings全局參數配置

mybatis框架在運行時可以調整一些運行參數。

比如:開啓二級緩存、開啓延遲加載。。

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

Setting(設置)

Description(描述)

Valid Values(驗證值組)

Default(默認值)

cacheEnabled

在全局範圍內啓用或禁用緩存配置任何映射器在此配置下。

true | false

TRUE

lazyLoadingEnabled

在全局範圍內啓用或禁用延遲加載。禁用時,所有協會將熱加載。

true | false

TRUE

aggressiveLazy

Loading

啓用時,有延遲加載屬性的對象將被完全加載後調用懶惰的任何屬性。否則,每一個屬性是按需加載。

true | false

TRUE

multipleResult

SetsEnabled

允許或不允許從一個單獨的語句(需要兼容的驅動程序)要返回多個結果集。

true | false

TRUE

useColumnLabel

使用列標籤,而不是列名。在這方面,不同的驅動有不同的行爲。參考驅動文檔或測試兩種方法來決定你的驅動程序的行爲如何。

true | false

TRUE

useGeneratedKeys

允許JDBC支持生成的密鑰。兼容的驅動程序是必需的。此設置強制生成的鍵被使用,如果設置爲true,一些驅動會不兼容性,但仍然可以工作。

true | false

FALSE

autoMapping

Behavior

指定MyBatis的應如何自動映射列到字段/屬性。NONE自動映射。 PARTIAL只會自動映射結果沒有嵌套結果映射定義裏面。 FULL會自動映射的結果映射任何複雜的(包含嵌套或其他)。

NONE, PARTIAL, FULL

PARTIAL

defaultExecutor

Type

配置默認執行人。SIMPLE執行人確實沒有什麼特別的。 REUSE執行器重用準備好的語句。 BATCH執行器重用語句和批處理更新。

SIMPLE REUSE BATCH

SIMPLE

defaultStatement

Timeout

設置驅動程序等待一個數據庫響應的秒數。

Any positive integer

Not Set (null)

safeRowBounds

Enabled

允許使用嵌套的語句RowBounds。

true | false

FALSE

mapUnderscore

ToCamelCase

從經典的數據庫列名A_COLUMN啓用自動映射到駱駝標識的經典的Java屬性名aColumn。

true | false

FALSE

localCacheScope

MyBatis的使用本地緩存,以防止循環引用,並加快反覆嵌套查詢。默認情況下(SESSION)會話期間執行的所有查詢緩存。如果localCacheScope=STATMENT本地會話將被用於語句的執行,只是沒有將數據共享之間的兩個不同的調用相同的SqlSession。

SESSION | STATEMENT

SESSION

dbcTypeForNull

指定爲空值時,沒有特定的JDBC類型的參數的JDBC類型。有些驅動需要指定列的JDBC類型,但其他像NULL,VARCHAR或OTHER的工作與通用值。

JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER

OTHER

lazyLoadTrigger

Methods

指定觸發延遲加載的對象的方法。

A method name list separated by commas

equals,clone,hashCode,toString

defaultScripting

Language

指定所使用的語言默認爲動態SQL生成。

A type alias or fully qualified class name.

org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver

callSettersOnNulls

指定如果setter方法​​或地圖的put方法時,將調用檢索到的值是null。它是有用的,當你依靠Map.keySet()或null初始化。注意原語(如整型,布爾等)不會被設置爲null。

true | false

FALSE

logPrefix

指定的前綴字串,MyBatis將會增加記錄器的名稱。

Any String

Not set

logImpl

指定MyBatis的日誌實現使用。如果此設置是不存在的記錄的實施將自動查找。

SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING

Not set

proxyFactory

指定代理工具,MyBatis將會使用創建懶加載能力的對象。

CGLIB | JAVASSIST

 

     typeAliases(別名)

在mapper.xml中,定義很多的statement,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

  自定義別名

在SqlMapConfig.xml中配置:

<typeAliases>

    <!--單個別名定義 -->

    <typeAliasalias="user"type="cn.po.User"/>

    <!--批量別名定義,掃描整個包下的類,別名爲類名(首字母大寫或小寫都可以) -->

    <packagename="cn.po"/>

    <packagename="其它包"/>

</typeAliases>

     typeHandlers(類型處理器)

mybatis中通過typeHandlers完成jdbc類型和java類型的轉換。

通常情況下,mybatis提供的類型處理器滿足日常需要,不需要自定義.

mybatis支持類型處理器

類型處理器

Java類型

JDBC類型

BooleanTypeHandler

Booleanboolean

任何兼容的布爾值

ByteTypeHandler

Bytebyte

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

ShortTypeHandler

Shortshort

任何兼容的數字或短整型

IntegerTypeHandler

Integerint

任何兼容的數字和整型

LongTypeHandler

Longlong

任何兼容的數字或長整型

FloatTypeHandler

Floatfloat

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

DoubleTypeHandler

Doubledouble

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

BigDecimalTypeHandler

BigDecimal

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

StringTypeHandler

String

CHARVARCHAR類型

ClobTypeHandler

String

CLOBLONGVARCHAR類型

NStringTypeHandler

String

NVARCHARNCHAR類型

NClobTypeHandler

String

NCLOB類型

ByteArrayTypeHandler

byte[]

任何兼容的字節流類型

BlobTypeHandler

byte[]

BLOBLONGVARBINARY類型

DateTypeHandler

Datejava.util

TIMESTAMP類型

DateOnlyTypeHandler

Datejava.util

DATE類型

TimeOnlyTypeHandler

Datejava.util

TIME類型

SqlTimestampTypeHandler

Timestampjava.sql

TIMESTAMP類型

SqlDateTypeHandler

Datejava.sql

DATE類型

SqlTimeTypeHandler

Timejava.sql

TIME類型

ObjectTypeHandler

任意

其他或未指定類型

EnumTypeHandler

Enumeration類型

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

 

   Mappers(映射配置)

 通過resource加載單個文件

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


  通過url加載單個文件

 <mapper url=””/>使用完全限定路徑

<mapper url="file:///D:\my\config\sqlmap\User.xml"/>

 通過class加載單個文件

 <mapper class=””/>使用mapper接口類路徑

 <mapper class="cn.mybatis.mapper"/>

注意:此種方法要求mapper接口名稱和mapper映射文件名稱相同,且放在同一個目錄中。

 

  批量加載mapper(推薦使用)


注意:此種方法要求mapper接口名稱和mapper映射文件名稱相同,且放在同一個目錄中。

 



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