開源實體對映框架EmitMapper介紹

2021-06-22 00:29:27 字數 2534 閱讀 4872

1

public

class sourse

2 910

public

class dest

11

1819

public

class inner

20

2425 sourse src = new sourse

26 ,

34 e = "

test

"35 };

3640

41 assert.areequal(dst.b.tostring(), src.b);

42 assert.areequal(dst.c.c1, 0l);

43 assert.areequal(dst.c.c2, src.c.c2);

44 assert.isnull(dst.e);

預設的對映配置器能自動轉換以下幾種型別:

任何型別到string型別使用tostring()方法;

可以使用system.convert類轉換的原始型別;

可空型別、列舉型別、各種集合型別、結構與類;

複雜的巢狀型別採用遞迴方式轉換;

如果預設的轉換滿足不了需求,預設的對映配置器還允許指定命名約定,自定義建構函式,自定義轉換器,忽略成員等。

支援的方法

描述

convertusing

為指定的成員提供自定義的轉換邏輯

convertgeneric

為指定的泛型型別成員提供自定義的轉換邏輯

constructby

為目標物件使用指定的建構函式替代預設建構函式

nullsubstitution

當源物件中指定的成員在為null時,給目標物件的成員賦值

ignoremembers

忽略指定成員的對映

postprocess

在對映完成後執行指定的方法

shallowmap

指定的成員採用淺拷貝方式對映

deepmap

指定的成員採用深拷貝方式對映

matchmembers

如果成員名稱的對映不採用精確匹配,可以指定具體的對映邏輯

選擇幾個方法簡單示例如下:

1

public

class sourse

2 910

public

class dest

11

1819

public

class inner

20

2425

public

class inner2

26

3032

33new defaultmapconfig()

34 .ignoremembers(new

string )

35 .nullsubstitution((value) => -1m)

36 .convertusing(value => new inner2 )

37 .postprocess((value, state) => )

38 );

4041 assert.isnull(dst.a);

42 assert.areequal(dst.b, -1m);

43 assert.areequal(dst.d.d22, src.d.d2);

44 assert.areequal(dst.f, "

nothing

");

1

public

2

1011

12

30else

31

34 }

35 )

36 }

37 )

38 .toarray();

39 }

4041

public

string getconfigurationname()

42

4546

47

5051

public staticconvertersmanager getstaticconvertersmanager()

52

55 }

hibernate實體對映

1.寫注釋 格式為 屬性,表示本類的?關係 例如 2.寫模板 多對一 一對多 多對多 注 多對多中的table 表示填入中間 的名稱 3.填空 name屬性 屬性名 注釋中的第1問號 class屬性 關聯的實體型別 注釋中的第2個問號 column屬性 多對一中的 一般可以寫成屬性名加id字尾,如屬...

5 1 2 對映實體 Entity

標註 entity 注釋的類,表示該類是乙個可持久化的實體。當在容器中時,伺服器將會首先載入所有標註了 entity 注釋的實體類。例如,contact 類標註成實體後,如以下所示。entity public class contacteo entity 注釋的定義的屬性如下。target type...

7 3 5 3 對映子類實體

下面來看一下各個子類的實體對映配置,子類實體中的屬性將自動對映到改子類所對應的表中。實體 regularemployeeeo 的 如下所示。regularemployeeeo實體 entity table name tb regular employee public class regularem...