”;
We can add map multiple objects as well. For Example, we want to get a DeliveryAddress Object using Student and Address object.
Now create a mapper interface which can map two objects into one.
@Mapper public interface DeliveryAddressMapper { @Mapping(source = "student.name", target = "name") @Mapping(source = "address.houseNo", target = "houseNumber") DeliveryAddress getDeliveryAddress(StudentEntity student, AddressEntity address); }
Example
Open project mapping as updated in Custom Mapping chapter in Eclipse.
Create DeliveryAddress.java with following code −
DeliveryAddress.java
package com.tutorialspoint.model; public class DeliveryAddress { private String name; private int houseNumber; private String city; private String state; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getHouseNumber() { return houseNumber; } public void setHouseNumber(int houseNumber) { this.houseNumber = houseNumber; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getState() { return state; } public void setState(String state) { this.state = state; } }
Create AddressEntity.java with following code −
AddressEntity.java
package com.tutorialspoint.entity; public class AddressEntity { private int houseNo; private String city; private String state; public int getHouseNo() { return houseNo; } public void setHouseNo(int houseNo) { this.houseNo = houseNo; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getState() { return state; } public void setState(String state) { this.state = state; } }
Create DeliveryAddressMapper.java with following code −
DeliveryAddressMapper.java
package com.tutorialspoint.mapper; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import com.tutorialspoint.entity.AddressEntity; import com.tutorialspoint.entity.StudentEntity; import com.tutorialspoint.model.DeliveryAddress; @Mapper public interface DeliveryAddressMapper { @Mapping(source = "student.name", target = "name") @Mapping(source = "address.houseNo", target = "houseNumber") DeliveryAddress getDeliveryAddress(StudentEntity student, AddressEntity address); }
Create DeliveryAddressMapperTest.java with following code −
DeliveryAddressMapperTest.java
package com.tutorialspoint.mapping; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; import com.tutorialspoint.entity.AddressEntity; import com.tutorialspoint.entity.StudentEntity; import com.tutorialspoint.mapper.DeliveryAddressMapper; import com.tutorialspoint.model.DeliveryAddress; public class DeliveryAddressMapperTest { private DeliveryAddressMapper deliveryAddressMapper = Mappers.getMapper(DeliveryAddressMapper.class); @Test public void testEntityToModel() { StudentEntity student = new StudentEntity(); student.setClassVal("X"); student.setName("John"); student.setId(1); AddressEntity address = new AddressEntity(); address.setCity("Y"); address.setState("Z"); address.setHouseNo(1); DeliveryAddress deliveryAddress = deliveryAddressMapper.getDeliveryAddress(student, address); assertEquals(deliveryAddress.getName(), student.getName()); assertEquals(deliveryAddress.getCity(), address.getCity()); assertEquals(deliveryAddress.getState(), address.getState()); assertEquals(deliveryAddress.getHouseNumber(), address.getHouseNo()); } }
Run the following command to test the mappings.
mvn clean test
Output
Once command is successful. Verify the output.
mvn clean test [INFO] Scanning for projects... ... [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mapping --- [INFO] Surefire report directory: mvnmappingtargetsurefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.tutorialspoint.mapping.DeliveryAddressMapperTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 sec Running com.tutorialspoint.mapping.StudentMapperTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Results : Tests run: 3, Failures: 0, Errors: 0, Skipped: 0 ...
”;