Найти в Дзене
Alex Pevnenko

MapStruct, часть 1: Шпаргалка по аннотациям

Всем привет! Данная статья это часть цикла статей по MapStruct. Приятнтго чтения!🗺️ MapStruct — это библиотека для генерации мапперов в Java. Если вы устали писать однотипный код для преобразования объектов из одного типа в другой (например, из DTO в Entity и обратно), MapStruct приходит на помощь. В этой статье разберёмся с основными аннотациями, которые нужны для работы с MapStruct. Сохрани этот материал в закладки — пригодится для быстрого поиска и повторения. Главная аннотация для объявления интерфейса маппера: Что делает: Используется для настройки маппинга между полями объектов. Что делает: Устаревшая аннотация (до MapStruct 1.4). Вместо неё теперь пишут несколько @Mapping подряд. Использовать больше не стоит — пишем по-новому. Применяется для настройки маппинга на уровне метода, например, чтобы игнорировать null-значения: Опции @BeanMapping: Для enum-ов! Если нужно сопоставить одно значение enum с другим: Есть специальное значение: Генерирует обратный маппинг, если нужно
Оглавление

Всем привет! Данная статья это часть цикла статей по MapStruct.

Приятнтго чтения!🗺️

MapStruct — это библиотека для генерации мапперов в Java. Если вы устали писать однотипный код для преобразования объектов из одного типа в другой (например, из DTO в Entity и обратно), MapStruct приходит на помощь.

В этой статье разберёмся с основными аннотациями, которые нужны для работы с MapStruct. Сохрани этот материал в закладки — пригодится для быстрого поиска и повторения.

📌 @Mapper

Главная аннотация для объявления интерфейса маппера:

-2

Что делает:

  • Помечает интерфейс как маппер.
  • Позволяет MapStruct сгенерировать реализацию этого интерфейса во время компиляции.

📌 @Mapping

Используется для настройки маппинга между полями объектов.

-3

Что делает:

  • Указывает явное соответствие между полями.
  • Нужен, если имена полей отличаются или нужна дополнительная логика.

📌 @Mappings

Устаревшая аннотация (до MapStruct 1.4). Вместо неё теперь пишут несколько @Mapping подряд.

Использовать больше не стоит — пишем по-новому.

📌 @BeanMapping

Применяется для настройки маппинга на уровне метода, например, чтобы игнорировать null-значения:

-4

Опции @BeanMapping:

  • ignoreByDefault — игнорировать все поля, кроме явно указанных в @Mapping.
  • resultType — тип возвращаемого объекта (если нужно преобразование в интерфейс или базовый класс).

📌 @ValueMapping

Для enum-ов! Если нужно сопоставить одно значение enum с другим:

-5

Есть специальное значение:

  • source = MappingConstants.ANY_REMAINING — обработать все остальные варианты.
  • source = MappingConstants.NULL — обработать null.

📌 @InheritInverseConfiguration

Генерирует обратный маппинг, если нужно сделать "обратный конвертер":

-6

Экономит время и код — обратный маппинг создаётся автоматически.

📌 @InheritConfiguration

Позволяет наследовать настройки маппинга из другого метода:

-7

Полезно, если нужно немного изменить существующий маппинг.

📌 @AfterMapping и @BeforeMapping

Хуки для выполнения дополнительной логики:

-8
  • @BeforeMapping — вызывается до маппинга.
  • @AfterMapping — вызывается после маппинга.
  • @MappingTarget — помечает объект, в который маппятся данные.

📌 Итог

MapStruct — мощный инструмент, который позволяет писать меньше кода и избегать ошибок при ручном маппинге. В следующей части разберём более продвинутые фишки: как работать с коллекциями, nested-объектами и кастомными мапперами.

Сохраняй статью, чтобы не потерять! И напиши в комментариях, какие вопросы по MapStruct тебя интересуют — разберём их в следующих частях. 🚀

Весь код к данной статье вы сможете найти тут!

#Java #MapStruct #Программирование #Backend #Entity #Маппинг #Разработка #Шпаргалка #SpringBoot #Код #ОбучениеJava