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, включая базовое сопоставление, коллекции сопоставлений, пользовательское сопоставление, пропуск нулевых значений и стратегии сопоставления свойств. Используя эти методы, вы можете значительно сократить объем шаблонного кода, сделать вашу кодовую базу более чистой и удобной в сопровождении.