Spring Boot MapStruct:Map后字段是否大写?

svujldwt  于 2023-03-08  发布在  Spring
关注(0)|答案(1)|浏览(193)

我是MapStruct的新手,正在尝试学习一些功能。我正在尝试在从dtoMap到entity后将title字段大写。我使用了以下方法,但我不确定是否已经有一个build函数可以直接使用,而无需使用@AfterMapping创建新方法:

@Mapper(componentModel = "spring")
public interface RecipeRequestMapper {

    RecipeRequestMapper MAPPER = Mappers.getMapper(RecipeRequestMapper.class);

    Recipe toEntity(RecipeRequest dto);

    RecipeRequest toDto(Recipe entity);

    @AfterMapping
    default void getCapitalizedTitle(@MappingTarget Recipe entity, RecipeRequest dto) {
        entity.setTitle(WordUtils.capitalizeFully(dto.getTitle()));
    }
}

这似乎是工作,但我想知道是否有一个适当的方法来完成这项任务?

qhhrdooz

qhhrdooz1#

我想你可以这样表达:

@Mapping(target = "title", expression = java(WordUtils.capitalizeFully(dto.getTitle()))")
Recipe toEntity(RecipeRequest dto);

@Mapping(target = "title", expression = "java(WordUtils.capitalizeFully(entity.getTitle()))")
RecipeRequest toDto(Recipe entity);

也可能有必要使用完整的软件包名称:

java(org.apache.commons.text.WordUtils.capitalizeFully(entity.getTitle()))

相关问题