Questão FC373263
Em uma aplicação, considere a existência de uma classe chamada Advogado com o atributo nome e outra classe AdvogadoDto com o atributo nomeCompleto. Usando MapStruct, uma Analista c
Linguagens de Programação
FCC · 2022
Em uma aplicação, considere a existência de uma classe chamada Advogado com o atributo nome e outra classe AdvogadoDto com o atributo nomeCompleto. Usando MapStruct, uma Analista criou a interface abaixo.
..I..
public interface AdvogadoMapper {
..II.. (target = "nomeCompleto", source = "nome")
AdvogadoDto advogadoToAdvogadoDto(Advogado advogado);
}
Para que o mapeamento seja realizado corretamente, as lacunas I e II devem ser preenchidas, correta e respectivamente, por
- @Mapper e @Mapping
- @Mapping e @Equals
- @MapStruct e @Mappings
- @MapStruct e @Map
- @Mapper e @Equity
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
Na solução correta usa‑se @Mapper na declaração da interface para indicar ao MapStruct que deve gerar a implementação concreta do mapper. Essa anotação habilita o processamento e permite, opcionalmente, configurar o componentModel (por exemplo, "spring").
Como os nomes dos campos são diferentes — Advogado.nome e AdvogadoDto.nomeCompleto — é necessário explicitar o mapeamento entre eles com @Mapping.
A anotação @Mapping é aplicada sobre o método de conversão e recebe os atributos source e target, por exemplo: @Mapping(target="nomeCompleto", source="nome").
Resumo: @Mapper na interface para gerar o mapper; @Mapping acima do método para alinhar campos com nomes distintos.
Conteúdo do catálogo FC Concursos · Atualizado em