使用dozer實現(xiàn)對象轉(zhuǎn)換

Dozer的github地址:https://github.com/DozerMapper/dozer
Dozer的官方文檔:http://dozer.sourceforge.net/
什么是Dozer
Dozer是一個JavaBean映射工具庫星立。
Dozer是Java Bean到Java Bean映射器爽茴,將數(shù)據(jù)從一個對象遞歸到另一個對象,它是一個開放源代碼映射框架绰垂,是強(qiáng)大的室奏,通用的,靈活的劲装,可重用的和可配置的胧沫。
Dozer支持簡單的屬性映射,復(fù)雜類型映射占业,雙向映射绒怨,隱式顯式映射以及遞歸映射。 這包括在元素級別還需要映射的映射集合屬性谦疾。
Dozer不僅支持屬性名稱之間的映射南蹂,而且還可以在類型之間自動轉(zhuǎn)換。 大多數(shù)轉(zhuǎn)換方案都是開箱即用的念恍,但Dozer還允許您通過XML或基于代碼的配置指定自定義轉(zhuǎn)換六剥。

Dozer有三種映射配置方式:

注解方式
API方式
XML方式

在springboot中的使用
1.引入依賴
項目使用maven晚顷,添加以下依賴到你的pom.xml即可:
版本(Apr 22, 2014)目前maven倉庫中最新的版本

<dependency>
    <groupId>net.sf.dozer</groupId>
    <artifactId>dozer</artifactId>
    <version>5.5.1</version>
</dependency>

如果要映射的兩個對象有完全相同的屬性名,那么一切都很簡單仗考。
只需要直接使用Dozer的API即可:

Mapper mapper = new DozerBeanMapper();
DestinationObject destObject =  
    mapper.map(sourceObject, DestinationObject.class);

實際應(yīng)用音同,項目需要返回VO類的數(shù)據(jù),但你在mapper中是使用PO類秃嗜,返回時需要轉(zhuǎn)換

Mapper announcementDozerMapper =new DozerBeanMapper();
    /**
     * @param announcementPo 原PO類的announcement類型
     * @return 返回VO類的announcement類型
     * @description 將announcement的PO類轉(zhuǎn)化為VO類
     **/
    private AnnouncementVo doToVo(AnnouncementPo announcementPo){
        if(announcementPo == null) {
            return null;
        }
        AnnouncementVo vo = announcementDozerMapper.map(announcementPo, AnnouncementVo.class);
        return vo;
    }

假如是集合對象呢,實際上就是使用JAVA8的stream流

Mapper announcementDozerMapper =new DozerBeanMapper();
    /**
     * @param announcementPos 原PO類的announcement類型集合
     * @return 返回VO類的announcement類型集合
     * @description 將announcement的PO類集合轉(zhuǎn)化為VO類集合
     **/
    private List<AnnouncementVo> doToVo(List<AnnouncementPo> announcementPos){
        if(announcementPos == null) {
            return null;
        }
        return announcementPos
                .stream()
                .map(announcement -> this.announcementDozerMapper.map(announcement, AnnouncementVo.class))
                .collect(Collectors.toList());
    }

注:官網(wǎng)著重建議:在現(xiàn)實應(yīng)用中权均,最好不要每次映射對象時都創(chuàng)建一個Mapper實例來工作,這樣會產(chǎn)生不必要的開銷锅锨。如果你不使用IoC容器(如:spring)來管理你的項目叽赊,那么,最好將Mapper定義為單例模式必搞。
如何來定義為單例模式呢必指?
1.創(chuàng)建類的唯一實例,加static變?yōu)轭惖某蓡T

public class DozerMapperConstant {
    public static final Mapper dozerMapper = new org.dozer.DozerBeanMapper();
}

2.獲取類的實例,通過類名.成員獲取實例

Mapper announcementDozerMapper =  DozerMapperConstant.dozerMapper;

參考文章:http://www.alliedjeep.com/146242.htm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恕洲,一起剝皮案震驚了整個濱河市塔橡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霜第,老刑警劉巖葛家,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泌类,居然都是意外死亡癞谒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門刃榨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弹砚,“玉大人,你說我怎么就攤上這事枢希∽莱裕” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵苞轿,是天一觀的道長读存。 經(jīng)常有香客問我,道長呕屎,這世上最難降的妖魔是什么让簿? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮秀睛,結(jié)果婚禮上尔当,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好椭迎,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布锐帜。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弱匪,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天伯病,我揣著相機(jī)與錄音附较,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的建炫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼疼蛾,長吁一口氣:“原來是場噩夢啊……” “哼肛跌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起察郁,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤衍慎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后皮钠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體西饵,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年鳞芙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片期虾。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡原朝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镶苞,到底是詐尸還是另有隱情喳坠,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布茂蚓,位于F島的核電站壕鹉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏聋涨。R本人自食惡果不足惜晾浴,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牍白。 院中可真熱鬧脊凰,春花似錦、人聲如沸茂腥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帕胆,卻和暖如春朝捆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背懒豹。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工芙盘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人歼捐。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓何陆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親豹储。 傳聞我的和親對象是個殘疾皇子贷盲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,809評論 6 342
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL剥扣、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,519評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理巩剖,服務(wù)發(fā)現(xiàn),斷路器钠怯,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法佳魔,類相關(guān)的語法,內(nèi)部類的語法晦炊,繼承相關(guān)的語法鞠鲜,異常的語法,線程的語...
    子非魚_t_閱讀 31,627評論 18 399
  • 小紅在單身了三十年后,終于戀愛了稳衬。在此之前霞捡,她特別焦慮,生怕自己會嫁不出去薄疚。直到她遇到了小志碧信。他們是同事,只不過是...
    白衣梧桐閱讀 259評論 0 0