Guida alla mappatura degli oggetti con ModelMapper in Java
La mappatura degli oggetti è un processo di trasformazione dei dati da un oggetto a un altro. In Java, può essere un'attività noiosa che richiede molto codice boilerplate per mappare i dati tra due oggetti con strutture diverse. Fortunatamente, esiste una potente libreria chiamata ModelMapper che semplifica il processo di mappatura degli oggetti e offre molta flessibilità nella personalizzazione del comportamento di mappatura.
In questo articolo, ti presenteremo ModelMapper e ti mostreremo come usarlo per mappare tra due oggetti in Java.
Introduzione a ModelMapper
Per iniziare a utilizzare ModelMapper nel tuo progetto Java, devi aggiungere la libreria ModelMapper al tuo progetto. Se stai usando Maven, aggiungi la seguente dipendenza al pom.xmlfile del tuo progetto:
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.4.2</version>
</dependency>
implementation 'org.modelmapper:modelmapper:2.4.2'
Mappatura di oggetti con ModelMapper
Supponiamo che tu abbia due oggetti con strutture diverse e desideri mappare i dati tra di loro. Ecco un esempio:
public class User {
private String name;
private int age;
// constructor, getters, and setters
}
public class UserDTO {
private String fullName;
private int userAge;
// constructor, getters, and setters
}
public class Main {
public static void main(String[] args) {
User user = new User("John", 30);
ModelMapper modelMapper = new ModelMapper();
UserDTO userDTO = modelMapper.map(user, UserDTO.class);
System.out.println(userDTO.getFullName()); // Output: John
System.out.println(userDTO.getUserAge()); // Output: 30
}
}
Quando eseguiamo il mainmetodo, l'output sarà Johne 30, che indica che la mappatura ha avuto successo.
Personalizzazione della mappatura degli oggetti
ModelMapper offre molta flessibilità nella personalizzazione della mappatura degli oggetti. È possibile specificare mappature di campi personalizzate, creare convertitori di tipi e configurare diverse strategie di mappatura.
Mappature dei campi personalizzate
A volte, potrebbe essere necessario mappare campi con nomi diversi tra due oggetti. Puoi ottenere ciò specificando le mappature dei campi personalizzate. Ecco un esempio:
modelMapper.typeMap(User.class, UserDTO.class)
.addMappings(mapper -> {
mapper.map(src -> src.getName(), UserDTO::setFullName);
mapper.map(src -> src.getAge(), UserDTO::setUserAge);
});
Convertitori di tipo
ModelMapper fornisce una serie di convertitori di tipi incorporati che possono convertire automaticamente i dati tra diversi tipi. Tuttavia, a volte potrebbe essere necessario creare i propri convertitori di tipi per i tipi di dati personalizzati. Ecco un esempio:
public class DateToStringConverter extends AbstractConverter<Date, String> {
@Override
protected String convert(Date source) {
return source.toString();
}
}
Possiamo registrare il convertitore di tipi personalizzato con l' ModelMapperistanza chiamando il addConverter()metodo:
modelMapper.addConverter(new DateToStringConverter());
Strategie di mappatura
ModelMapper fornisce diverse strategie di mappatura che possono essere utilizzate per personalizzare il comportamento della mappatura. Alcune delle strategie disponibili includono Strict, Loosee Standard.
Ad esempio, la Loosestrategia consente la mappatura tra campi con nomi e tipi diversi, mentre la Strictstrategia applica rigide regole di mappatura e solleva un'eccezione quando non è possibile eseguire una mappatura.
Puoi impostare la strategia di mappatura chiamando il setMatchingStrategy()metodo sull'istanza ModelMapper:
modelMapper.getConfiguration()
.setMatchingStrategy(MatchingStrategies.LOOSE);
Conclusione
In questo articolo, ti abbiamo mostrato come utilizzare ModelMapper per mappare tra due oggetti in Java. ModelMapper è una potente libreria che semplifica il processo di mappatura degli oggetti e offre molta flessibilità nella personalizzazione del comportamento di mappatura.
Utilizzando ModelMapper, puoi evitare di scrivere molto codice boilerplate per la mappatura degli oggetti e concentrarti sulle funzionalità principali della tua applicazione.
Grazie per aver letto. Buon apprendimento
Sostieni la nostra pubblicazione seguendola
Si vedano anche i seguenti articoli
Domanda di intervista basata sul flusso Java8 più frequente - Parte 1 Codifica: appiattisci un array in Javascript Il modo più semplice per accedere a un database in JAVA La bellezza del caos: come i pensieri casuali possono ispirare la creatività Cattura più eccezioni in Java Apache Maven - In breve
![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































