MapStruct使用

背景

在一個(gè)成熟可維護(hù)的工程中衷快,細(xì)分模塊后拷肌,domian工程最好不要被其他工程依賴馋袜,但是實(shí)體類一般存于domain之中,這樣其他工程想獲取實(shí)體類數(shù)據(jù)時(shí)就需要在各自工程寫model趁啸,自定義model可以根據(jù)自身業(yè)務(wù)需要而并不需要映射整個(gè)實(shí)體屬性强缘。
mapstruct這個(gè)插件就是用來處理domin實(shí)體類與model類的屬性映射,定義mapper接口莲绰,mapstruct就會自動的幫我們實(shí)現(xiàn)這個(gè)映射接口欺旧,避免了麻煩復(fù)雜的映射實(shí)現(xiàn)。

image.png

如何使用蛤签?

1辞友、簡單封裝


import org.mapstruct.InheritConfiguration;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mappings;

import java.util.Collection;
import java.util.List;

/**
 * @author jack cooper
 * <p></p>
 * 基礎(chǔ)轉(zhuǎn)換類,提供基本的幾個(gè)方法,直接繼承就可以称龙,如果有需要寫Mappings的寫在 {@link #to(Object)} 方法上
 * 并且接口類上一定要加上 {@link org.mapstruct.Mapper} 注解
 * 默認(rèn)注解留拾,需要單獨(dú)定義 如 CategoryMapper MAPPER = Mappers.getMapper(CategoryMapper.class); 以此進(jìn)行實(shí)例創(chuàng)建和調(diào)用
 * 或者如下
 *
 * @Mapper(componentModel = "spring") 此注解可通過spring進(jìn)行注入。
 */
public interface BasicObjectMapper<SOURCE, TARGET> {
    /**
     * 如有需要自定義該注解即可
     * 例如:
     *
     * @Mappings({
     * @Mapping(source = "code", target = "categoryCode"),
     * @Mapping(source = "name", target = "categoryName")
     * })
     * <p></p>
     * 重寫此注解時(shí)一定要注意 返回值(TARGET) 和 參數(shù)(SOURCE) 的順序
     */
    @Mappings({})
    @InheritConfiguration
    TARGET to(SOURCE source);

    @InheritConfiguration
    List<TARGET> to(Collection<SOURCE> source);

    @InheritInverseConfiguration
    SOURCE from(TARGET source);

    @InheritInverseConfiguration
    List<SOURCE> from(Collection<TARGET> source);
}

2鲫尊、自定義mapper

開發(fā)中如需要對象轉(zhuǎn)換操作可直接新建interface并繼承BasicObjectMapper<SOURCE,TARGET>痴柔,并在新建的接口上加上 @Mapper(componentModel = "spring"),

3疫向、字段不一致地方配置mapping

import com.ampmind.framework.api.base.BasicObjectMapper;
    import com.ampmind.service.skumng.api.protocol.vo.CategoryVo;
    import com.ampmind.service.skumng.domain.ProductCategory;
    import org.mapstruct.Mapper;
    import org.mapstruct.Mapping;
    import org.mapstruct.Mappings;

    /**
    * Created by  on 2017/3/30.
    *
    */
    @Mapper(componentModel = "spring")
    public interface CategoryMapper extends BasicObjectMapper<CategoryVo, ProductCategory> {
    @Mappings({
    @Mapping(source = "code", target = "categoryCode"),
    @Mapping(source = "name", target = "categoryName")
    })
    ProductCategory to(CategoryVo source);
    }

文章參考:

https://blog.csdn.net/jtf8525140/article/details/78130601

https://www.tuicool.com/articles/uiIRjai

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咳蔚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子搔驼,更是在濱河造成了極大的恐慌谈火,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舌涨,死亡現(xiàn)場離奇詭異糯耍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)囊嘉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門温技,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扭粱,你說我怎么就攤上這事舵鳞。” “怎么了琢蛤?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵系任,是天一觀的道長。 經(jīng)常有香客問我虐块,道長,這世上最難降的妖魔是什么嘉蕾? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任贺奠,我火速辦了婚禮,結(jié)果婚禮上错忱,老公的妹妹穿的比我還像新娘儡率。我一直安慰自己,他們只是感情好以清,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布儿普。 她就那樣靜靜地躺著,像睡著了一般掷倔。 火紅的嫁衣襯著肌膚如雪眉孩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音浪汪,去河邊找鬼巴柿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛死遭,可吹牛的內(nèi)容都是我干的广恢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼呀潭,長吁一口氣:“原來是場噩夢啊……” “哼钉迷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钠署,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤糠聪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后踏幻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枷颊,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年该面,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夭苗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡隔缀,死狀恐怖题造,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猾瘸,我是刑警寧澤界赔,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站牵触,受9級特大地震影響淮悼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揽思,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一袜腥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钉汗,春花似錦羹令、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卢未,卻和暖如春肪凛,著一層夾襖步出監(jiān)牢的瞬間堰汉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工显拜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衡奥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓远荠,卻偏偏與公主長得像矮固,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子譬淳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348