第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Mapstruct:當(dāng)源為空時如何將目標(biāo)字符串默認(rèn)為空字符串Java / Spring

Mapstruct:當(dāng)源為空時如何將目標(biāo)字符串默認(rèn)為空字符串Java / Spring

尚方寶劍之說 2023-03-31 15:06:38
我有兩個對象源和目標(biāo),它們都具有相同的字段名稱和類型。如果源字段為空,我希望目標(biāo)為“”(空字符串)我的接口映射看起來像這樣(這只是兩個字段,我有很多)@Mapper(componentModel = "spring", nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT)public interface MyMapper {@Mappings({    @Mapping(target="medium", defaultExpression="java(\"\")"),    @Mapping(target="origin", defaultExpression="java(\"\")") }) public Target mapFrom(Source source)如果 Source 有一個值,它應(yīng)該被復(fù)制,如果它在源中為空,那么在目標(biāo)中它應(yīng)該是“”。Mapstruct-1.3.0 似乎只是讓一切都為空。任何想法?我希望一切都默認(rèn)為空字符串
查看完整描述

2 回答

?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個贊

您需要設(shè)置NullValuePropertyMappingStrategy(作為注釋的一部分Mapper)以定義如何映射空屬性。

參見NullValuePropertyMappingStrategy.html#SET_TO_DEFAULT

String的默認(rèn)值為""。您不需要明確定義它。

所以,你的映射器可以簡單地看起來像這樣:

@Mapper(

? ? componentModel = "spring",?

? ? nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT,?

? ? nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_DEFAULT

)

public interface MyMapper {


? ? public Target mapFrom(Source source);


}


查看完整回答
反對 回復(fù) 2023-03-31
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個贊

當(dāng)您的 Source 對象具有與 Target 對象相同的字段并且當(dāng)您想要管理所有 Source值(例如對于 String)成為Target 對象中的空字符串(“”)時,您可以從MapStruct庫創(chuàng)建映射器接口,如下所示:

步驟1:

@Mapper(componentModel = "spring")

public interface SourceToTargetMapper {


? Target map(Source source);


? @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_DEFAULT)

? void update(Source source, @MappingTarget Target target);

}

整個技巧是定義nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_DEFAULT,但您不能在 @Mapper 注釋中定義它。取而代之的是,您必須將它作為參數(shù)放在update()方法的 @BeanMapping 注釋中。您可以在MapStruct 文檔中閱讀更多相關(guān)信息。


第2步:

因此,您必須在代碼中再執(zhí)行一項(xiàng)操作并使用剛剛實(shí)現(xiàn)的“update()”方法:


@Component

public class ClassThatUsingMapper {


? private final SourceToTargetMapper mapper;


? public Target someMethodToMapObjects(Source source) {

? ? Target target = mapper.map(source);

? ? mapper.update(source, target)


? ? return target;

? }

}


所有null 到空 String 的過程都發(fā)生在mapper.update(source, target)method 下。為您的項(xiàng)目運(yùn)行后mvn clean install,您可以檢查它的外觀以及它在target/generated-sources/annotations/...../SourceToTargetMapperImpl.java文件中的工作方式。


查看完整回答
反對 回復(fù) 2023-03-31
  • 2 回答
  • 0 關(guān)注
  • 1298 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號