
- MapStruct 教程
- MapStruct - 主頁
- MapStruct - 概述
- MapStruct - 環境設定
- 對映
- MapStruct - 基本對映
- MapStruct - 自定義對映
- MapStruct - 對映多個
- MapStruct - 對映巢狀 Bean
- MapStruct - 對映直接欄位
- MapStruct - 生成器
- 資料型別轉換
- MapStruct - 隱式型別轉換
- MapStruct - 使用 numberFormat
- MapStruct - 使用 dateFormat
- MapStruct - 使用表示式
- MapStruct - 使用常量
- MapStruct - 使用 defaultValue
- MapStruct - 使用 defaultExpression
- 對映集合
- MapStruct - 對映列表
- MapStruct - 對映對映
- 其他
- MapStruct - 對映流
- MapStruct - 對映列舉
- MapStruct - 丟擲異常
- MapStruct - 自定義對映器
- MapStruct 有用資源
- MapStruct - 快速指南
- MapStruct - 有用資源
- MapStruct - 討論
MapStruct - 對映多個物件
我們還可新增對映多個物件。例如,我們想要使用 Student 和 Address 物件獲取 DeliveryAddress 物件。
現在,建立一個對映器介面將能夠將兩個物件對映到一個物件。
@Mapper public interface DeliveryAddressMapper { @Mapping(source = "student.name", target = "name") @Mapping(source = "address.houseNo", target = "houseNumber") DeliveryAddress getDeliveryAddress(StudentEntity student, AddressEntity address); }
示例
在 Eclipse 中,請在自定義對映章節中更新開啟專案對映。
使用以下程式碼建立一個 DeliveryAddress.java −
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; } }
使用以下程式碼建立一個 AddressEntity.java −
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; } }
使用以下程式碼建立一個 DeliveryAddressMapper.java −
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); }
使用以下程式碼建立一個 DeliveryAddressMapperTest.java −
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()); } }
執行以下命令測試對映。
mvn clean test
輸出
命令成功後,驗證輸出。
mvn clean test [INFO] Scanning for projects... ... [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mapping --- [INFO] Surefire report directory: \mvn\mapping\target\surefire-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 ...
廣告