电竞比分网-中国电竞赛事及体育赛事平台

分享

《MyBatis用戶指南》-自定義帶參數(shù)的類型轉(zhuǎn)換器 typeHandler

 CevenCheng 2012-04-28

   類型別名只是一個(gè)更短的Java類型名。它只和xml配置有關(guān),并且僅僅是為了縮減冗余的全限定類名的輸入量,例如:

   

 

  

   使用這個(gè)配置,"Blog"現(xiàn)在可以在任何"domain.blog.Blog"可以出現(xiàn)的地方使用。

   有許多內(nèi)建的常用Java類型的別名,它們是大小寫不敏感的,考慮到重載的名稱問(wèn)題,要注意對(duì)于原始類型的特殊處理。

 

 

Alias

Mapped Type

_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

object

Object

map

Map

hashmap

HashMap

list

List

arraylist

ArrayList

collection

Collection

iterator

Iterator

 

P14

typeHandlers

  無(wú)論何時(shí)MyBatisPreparedStatement設(shè)置參數(shù)或從ResultSet檢索一個(gè)值,TypeHandler總是以一種適合于這種Java類型的方式來(lái)檢索到值。下面的表格描述了默認(rèn)的TypeHandler。

Type Handler

Java Types

JDBC Types

BooleanTypeHandler

Boolean, boolean

兼容BOOLEAN的類型

ByteTypeHandler

Byte, byte

兼容NUMERIC or BYTE的類型

ShortTypeHandler

Short, short

兼容NUMERIC or SHORT INTEGER的類型

IntegerTypeHandler

Integer, int

兼容NUMERIC or INTEGER的類型

LongTypeHandler

Long, long

兼容NUMERIC or LONG INTEGER的類型

FloatTypeHandler

Float, float

兼容NUMERIC or FLOAT的類型

DoubleTypeHandler

Double, double

兼容NUMERIC or DOUBLE的類型

BigDecimalTypeHandler

BigDecimal

兼容NUMERIC or DECIMAL的類型

StringTypeHandler

String

CHAR, VARCHAR

ClobTypeHandler

String

CLOB, LONGVARCHAR

NStringTypeHandler

String

NVARCHAR, NCHAR

NClobTypeHandler

String

NCLOB

ByteArrayTypeHandler

byte[]

兼容字節(jié)流(byte stream type)的類型

BlobTypeHandler

byte[]

BLOB, LONGVARBINARY

DateTypeHandler

Date (java.util)

TIMESTAMP

DateOnlyTypeHandler

Date (java.util)

DATE

TimeOnlyTypeHandler

Date (java.util)

TIME

SqlTimestampTypeHandler

Timestamp (java.sql)

TIMESTAMP

SqlDateTypeHadler

Date (java.sql)

DATE

SqlTimeTypeHandler

Time (java.sql)

TIME

ObjectTypeHandler

Any

其它或未定義的

EnumTypeHandler

Enumeration Type

VARCHAR – 任何兼容字符串的類型當(dāng)編碼被存儲(chǔ)時(shí) (不是索引).

 

 

 

P15

       你可以覆蓋type handler或定制一個(gè)去處理不支持或非標(biāo)準(zhǔn)化的類型。為此,只要實(shí)現(xiàn)TypeHandler接口(org.mybatis.type)、映射TypeHandler實(shí)現(xiàn)類到一個(gè)Java類型(也可以是一個(gè)JDBC類型)就行了,例如:

  

       使用這樣一個(gè)TypeHandler會(huì)覆蓋現(xiàn)存的Java字符串屬性、varchar參數(shù)和結(jié)果的type handler。注意:MyBatis不會(huì)依據(jù)數(shù)據(jù)庫(kù)元數(shù)據(jù)自省出類型,所以必須定義參數(shù)和結(jié)果映射中的類型是一個(gè)varchar字段才能鉤住正確的type handler. 這是因?yàn)?/span>MyBatis不會(huì)感知到數(shù)據(jù)類型,除非語(yǔ)句被執(zhí)行。

 

objectFactory

       每當(dāng)MyBatis創(chuàng)建結(jié)果對(duì)象的新實(shí)例時(shí),它會(huì)使用一個(gè)ObjectFactory實(shí)例來(lái)達(dá)到此目的。默認(rèn)的ObjectFactory只是用默認(rèn)構(gòu)造函數(shù)來(lái)初始化這個(gè)目標(biāo)類,如果參數(shù)映射存在,就使用一個(gè)參數(shù)化的構(gòu)造函數(shù)。如果想覆蓋ObjectFactory的默認(rèn)行為,可以自己創(chuàng)建一個(gè)。例如:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多