什么是dozer java,讓我們一起了解一下?
Dozer 是一個對象轉換工具。Dozer可以在JavaBean到JavaBean之間進行遞歸數據復制,并且這些JavaBean可以是不同的復雜的類型。所有的mapping,Dozer將會很直接的將名稱相同的fields進行復制,如果field名不同,或者有特別的對應要求,則可以在xml中進行定義。
為什么要使用Dozer?
因為分析多層架構的J2EE系統,經常存在JavaBean直接的拷貝。比如我們在DAO層,通過Do取得業務層需要的數據,將這些數據傳遞給Service層的VO。Do與VO就存在典型的值拷貝。
典型的解決方案就是手動拷貝,代碼中充斥大量Set 和Get方法,真正的業務被埋藏值與值的拷貝之中。
另一種方案就是使用BeanUtil,但BeanUtil不夠很好的靈活性,又時候還不得不手動拷貝。Dozer可以靈活的對對象進行轉換,且使用簡單。
那么如何讓Dozer自動完成User類到ApiUserDestination類的映射?
1、創建兩個 Java Bean 類:
public?class?User?{ ????private?String?name; ????private?Integer?age; ????private?Date?birthday; ????//?省略?setter?和?getter?方法 }
public?class?UserApiDestinationObject?{ ????private?String?name; ????private?String?age; ????public?String?birthday;
??//?重寫?toString?方法,方便測試 ????@Override ????public?String?toString()?{ ????????return?"UserApiDestinationObject{"?+ ????????????????"name='"?+?name?+?'\''?+ ????????????????",?age='"?+?age?+?'\''?+ ????????????????",?birthday='"?+?birthday?+?'\''?+ ????????????????'}'; ????} ????//?省略?getter、setter?方法 }
2、測試:
@Test public?void?apiTest()?{ ????Mapper?mapper?=?new?DozerBeanMapper(); ????User?user?=?new?User(); ????user.setName("sid10t."); ????user.setAge(3); ????user.setBirthday(new?Date()); ????UserApiDestinationObject?destinationObject?=?mapper.map(user,?UserApiDestinationObject.class); ???? ????System.out.println(destinationObject); }
3、輸出:
UserApiDestinationObject{name='sid10t.',?age='3',?birthday='Tue?Mar?08?10:56:02?CST?2022'}
此時,Dozer 自動完成 User 類到 ApiUserDestination 類的映射。這是 Dozer 的默認映射方式——隱式映射,Dozer 自動的將兩個實體類的相同屬性名的屬性進行映射。如果兩個屬性的屬性名相同,但是類型不同,Dozer 會按照默認的轉換規則進行類型的轉換,而且不同修飾符的屬性也能正常進行映射。
以上就是小編今天的分享了,希望可以幫助到大家。