Ich habe zwei verschiedene Pakete von User definiere Objekte .....
%Vor%Hierarchie der Objekte und Name der Objekte auf beiden Seiten unterschiedlich. Ich möchte o Kopieren Sie das Quellseitenobjekt zum Zielseitenobjekt, Feld für Feld oder über Getter und Setter mit Reflection.
Zum Beispiel
Quellseitige Objekte
%Vor%Zielseitenobjekte
%Vor%Ich habe viele Objekte studiert, die Frameworks für diese Aufgaben wie
kartierenSchließlich wähle ich das Orika -Grundwerk, um das obige Mapping von Objekten zu Objekten zu vervollständigen. Wir können das Mapping über ein anderes Mapper-Framework machen, aber ich war wie Orika Framework, weil dieses Framework sehr einfach für die Zuordnung von Objekten zu Objekten.
Ich werde das Schritt für Schritt erklären.
1. Erstellen Sie die Objects of Source-Seite Object und Destination Side Object.
gefällt das ..
%Vor%
2. Erstellen der DefaultMapperFactory
%Vor%3. Felder zuordnen
%Vor%Es funktioniert gut Prost
Ich denke, Sie könnten MapStruct verwenden, um zwischen POJOs mit unterschiedlichen Attributnamen zu mappen.
Aber Ihr Szenario ist komplex, weil Sie ws.lender.dto.CustomerAddresses
in copl.com.dto.Customer
umwandeln möchten, und das bedeutet, ein List<ws.lender.dto.PreviousAddress>
enthalten in ein ws.lender.dto.PreviousAddresses
Objekt in ein Set<copl.com.dto.CustomerAddress>
in ein copl.com.dto.Customer
zu konvertieren Objekt.
Also, ich werde das Schritt für Schritt erklären.
ws.lender.dto.PreviousAddress
in copl.com.dto.CustomerAddress
Um diese Konvertierung durchzuführen, benötigen Sie eine Schnittstelle (MapStruct erstellt eine Instanz dafür), die für die Zuordnung vom Quellobjekt zum Zielobjekt zuständig ist:
%Vor% Diese Schnittstelle ordnet ein Objekt PreviousAddress
einem CustomerAddress
zu, wenn man berücksichtigt, dass das Attribut streetNo
auf streetNumber
abgebildet werden muss. Es gibt keine Zuordnung für das unitNumber
-Attribut, da keine Quelle dafür vorhanden ist.
List<ws.lender.dto.PreviousAddress>
in Set<copl.com.dto.CustomerAddress>
Nun müssen Sie der vorhandenen CustomerAddressesMapper
Schnittstelle eine weitere Zuordnungsmethode hinzufügen:
Diese Methode verwendet das vorherige previousToCustomerObject
, um jedes Element der Quellliste in den Zielsatz zu konvertieren.
ws.lender.dto.CustomerAddresses
in copl.com.dto.Customer
Schließlich müssen Sie die letzte Zuordnungsmethode zu CustomerAddressesMapper
interface:
Dies ist die Stelle, an der Sie ein Ursprungsobjekt zuordnen, indem Sie das Attribut previousAddresses.previousAddress
in das Attribut customerAddresses
umwandeln, wobei Sie frühere Methoden verwenden.
Um den Mapper zu verwenden, müssen Sie folgenden Code schreiben:
%Vor% MapStruct ist ein Quellcodegenerator, daher müssen Sie Ihre pom.xml
richtig konfigurieren, um die MapStruct-Abhängigkeit einzuschließen und diese Codegenerierung aufzurufen. Sie können sehen, wie Sie dies hier
Nun, ich baue und führe diesen Code nicht, aber das ist der Weg, es zu tun.
Ich hoffe, es hilft!
Sie können Object Mapper ausprobieren besser zum Werfen oder Kopieren. Das Objekt für andere Klassen in anderen Paketen können Sie einen Eigenschaftswert wie
hinzufügensenderClass und rvcClass
Später können Sie diese Eigenschaften lesen und mit der Konvertierung der Klasse fortfahren. Wahrscheinlich haben Sie bereits ein Mapping für die Absenderklasse gegen die Empfängerklasse bereit.
Wenn ich Sie richtig verstehe, müssen Sie alle gleich genannten Eigenschaften von einem Objekt in ein anderes kopieren. Ähnlich benannte Eigenschaften wären Fälle, in denen das Quellobjekt eine Methode namens getPropertyName () hat und das Zielobjekt einen namens setPropertyName ().
Wenn dies zutrifft, möchten Sie die copyProperties-Methode der BeanUtils-Klasse aus der Apache Commons-Bibliothek verwenden. Dokumentation ist hier .
Nun haben Sie in Ihrem Beispiel einige entsprechende Eigenschaften, die nicht den gleichen Namen haben, z. B. StreetNumber und StreetNo. Ich fürchte, es gibt keinen einfachen Weg, diese Art von Dingen automatisch durch Reflexion zu bewältigen. Sie müssten die Zuordnungen zwischen Quell- und Zieleigenschaften selbst definieren, indem Sie zum Beispiel eine Hilfsklasse für das Kopieren definieren.
Tags und Links java reflection mapping