Упростите сопоставление объектов Java с помощью ModelMapper

ModelMapper — популярная библиотека Java, которая упрощает процесс сопоставления объектов между различными моделями или DTO (объектами передачи данных). Он предоставляет удобный способ преобразования данных из одного формата в другой, сокращая объем шаблонного кода и делая вашу кодовую базу более удобной в обслуживании. В этой статье мы рассмотрим несколько полезных методов, предоставляемых ModelMapper, и продемонстрируем их использование на примерах разговорного кода.

Метод 1: базовое сопоставление
Самым фундаментальным методом в ModelMapper является map(). Он сопоставляет свойства одного объекта с другим на основе их имен и типов. Вот пример:

ModelMapper modelMapper = new ModelMapper();
SourceObject source = new SourceObject("John", "Doe");
DestinationObject destination = modelMapper.map(source, DestinationObject.class);

Метод 2: сопоставление коллекций
ModelMapper также поддерживает сопоставление коллекций объектов. Метод map()может обрабатывать списки, наборы и другие типы коллекций. Вот пример:

List<SourceObject> sourceList = Arrays.asList(
    new SourceObject("John", "Doe"),
    new SourceObject("Jane", "Smith")
);
List<DestinationObject> destinationList = modelMapper.map(sourceList, new TypeToken<List<DestinationObject>>() {}.getType());

Метод 3: пользовательское сопоставление
Иногда вам может потребоваться настроить процесс сопоставления. ModelMapper предоставляет возможность определять собственные сопоставления с помощью addMappings(). Вот пример:

modelMapper.addMappings(mapper -> {
    mapper.map(source -> source.getSourceField() * 2, DestinationObject::setDestinationField);
});

Метод 4: пропуск нулевых значений
По умолчанию ModelMapper сопоставляет нулевые значения из исходных объектов в целевые объекты. Однако вы можете настроить его на пропуск нулевых значений, используя setSkipNullEnabled(). Вот пример:

modelMapper.getConfiguration().setSkipNullEnabled(true);

Метод 5: стратегии сопоставления свойств
ModelMapper поддерживает различные стратегии сопоставления свойств, такие как точное сопоставление имен, свободное сопоставление и сопоставление без учета регистра. Вы можете настроить стратегию сопоставления с помощью setMatchingStrategy(). Вот пример:

modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);

ModelMapper — мощный инструмент для упрощения сопоставления объектов в Java. В этой статье мы рассмотрели несколько ключевых методов, предоставляемых ModelMapper, включая базовое сопоставление, коллекции сопоставлений, пользовательское сопоставление, пропуск нулевых значений и стратегии сопоставления свойств. Используя эти методы, вы можете значительно сократить объем шаблонного кода, сделать вашу кодовую базу более чистой и удобной в сопровождении.