天天看點

MyBatis之ResultMap的association和collection标簽詳解(圖文例子)

@[toc]

mybatis 建立時的一個思想是:資料庫不可能永遠是你所想或所需的那個樣子。 我們希望每個資料庫都具備良好的第三範式或 bcnf 範式,可惜它們并不都是那樣。 如果能有一種資料庫映射模式,完美适配所有的應用程式,那就太好了,但可惜也沒有。 而 resultmap 就是 mybatis 對這個問題的答案。

屬性

描述

id

目前命名空間中的一個唯一辨別,用于辨別一個結果映射。

type

類的完全限定名, 或者一個類型别名(關于内置的類型别名,可以參考上面的表格)。

automapping

如果設定這個屬性,mybatis 将會為本結果映射開啟或者關閉自動映射。 這個屬性會覆寫全局的屬性 automappingbehavior。預設值:未設定(unset)。

extends

可以繼承其他resultmap的一些寫好的屬性

constructor - 用于在執行個體化類時,注入結果到構造方法中

idarg - id 參數;标記出作為 id 的結果可以幫助提高整體性能

arg - 将被注入到構造方法的一個普通結果

id – 一個 id 結果;标記出作為 id 的結果可以幫助提高整體性能

result – 注入到字段或 javabean 屬性的普通結果

association – 一個複雜類型的關聯;許多結果将包裝成這種類型

嵌套結果映射 – 關聯可以是 resultmap 元素,或是對其它結果映射的引用

collection – 一個複雜類型的集合

嵌套結果映射 – 集合可以是 resultmap 元素,或是對其它結果映射的引用

discriminator – 使用結果值來決定使用哪個 resultmap

case – 基于某些值的結果映射

嵌套結果映射 – case 也是一個結果映射,是以具有相同的結構和元素;或者引用其它的結果映射

property

映射到列結果的字段或屬性。如果 javabean 有這個名字的屬性(property),會先使用該屬性。否則 mybatis 将會尋找給定名稱的字段(field)。 無論是哪一種情形,你都可以使用常見的點式分隔形式進行複雜屬性導航。 人話為:就是你的java實體類

column

資料庫中的列名,或者是列的别名。一般情況下,這和傳遞給 resultset.getstring(columnname) 方法的參數一樣。

javatype

一個 java 類的全限定名,或一個類型别名(關于内置的類型别名,可以參考上面的表格)。 如果你映射到一個 javabean,mybatis 通常可以推斷類型。然而,如果你映射到的是 hashmap,那麼你應該明确地指定 javatype 來保證行為與期望的相一緻。

jdbctype

jdbc 類型,所支援的 jdbc 類型參見這個表格之後的“支援的 jdbc 類型”。 隻需要在可能執行插入、更新和删除的且允許空值的列上指定 jdbc 類型。這是 jdbc 的要求而非 mybatis 的要求。如果你直接面向 jdbc 程式設計,你需要對可以為空值的列指定這個類型。

typehandler

我們在前面讨論過預設的類型處理器。使用這個屬性,你可以覆寫預設的類型處理器。 這個屬性值是一個類型處理器實作類的全限定名,或者是類型别名。

- 常用例子展示

映射到列結果的字段或屬性。如果用來比對的 javabean 存在給定名字的屬性,那麼它将會被使用。否則 mybatis 将會尋找給定名稱的字段。 無論是哪一種情形,你都可以使用通常的點式分隔形式進行複雜屬性導航。 人話為:你要一對一的實體類中的另一個實體類的名稱

一個 java 類的完全限定名,或一個類型别名。 如果你映射到一個 javabean,mybatis 通常可以推斷類型。然而,如果你映射到的是 hashmap,那麼你應該明确地指定 javatype 來保證行為與期望的相一緻。

例子示範

實體類示範

- xml示範

這裡和一對一的表示不太一樣,這裡一般是一對多的集合類型,如:list

oftype

指定的這個一對多的集合的所存放的實體類的類型

- 實體類示範

jdbc type

java type

char

string

varchar

longvarchar

numeric

java.math.bigdecimal

decimal

bit

boolean

tinyint

byte

smallint

short

integer

bigint

long

real

float

double

binary

byte[]

varbinary

longvarbinary

date

java.sql.date

time

java.sql.time

timestamp

java.sql.timestamp

clob

blob

array

distinct

mapping of underlying type

struct

ref

datalink

java.net.url

附:表格來源

這樣就對resultmap具體參數進行詳細的解釋,還有對association和collection标簽的解釋和具體示範,希望能夠幫到你,一起學習,如果用到收藏一下呗!!!!

繼續閱讀