- MapStruct 教程
- MapStruct - 主頁
- MapStruct - 概覽
- MapStruct - 環境設定
- 對映
- MapStruct - 基本對映
- MapStruct - 自定義對映
- MapStruct - 多重對映
- MapStruct - 對映巢狀 Bean
- MapStruct - 對映直接欄位
- MapStruct - 構建器
- 資料型別轉換
- MapStruct - 隱式型別轉換
- MapStruct - 使用 numberFormat
- MapStruct - 使用 dateFormat
- MapStruct - 使用表示式
- MapStruct - 使用常量
- MapStruct - 使用 defaultValue
- MapStruct - 使用 defaultExpression
- 對映集合
- MapStruct - 對映列表
- MapStruct - 對映 Map
- 雜項
- MapStruct - 對映流
- MapStruct - 對映列舉
- MapStruct - 丟擲異常
- MapStruct - 定製對映器
- MapStruct 實用資源
- MapStruct - 快速指南
- MapStruct - 實用資源
- MapStruct - 討論
MapStruct - 對映列表
使用 Mapstruct,我們可以用與對映基本型別相似的方式對映列表。要獲取物件列表,我們應提供可對映物件的對映器方法。
語法
@Mapper
public interface CarMapper {
List<String> getListOfStrings(List<Integer> listOfIntegers);
List<Car> getCars(List<CarEntity> carEntities);
Car getModelFromEntity(CarEntity carEntity);
}
以下示例演示同樣的內容。
示例
在 Eclipse 中,將更新的對映專案作為 使用 defaultExpression 對映 一章的內容
使用以下程式碼更新 CarEntity.java −
CarEntity.java
package com.tutorialspoint.entity;
import java.util.GregorianCalendar;
public class CarEntity {
private int id;
private double price;
private GregorianCalendar manufacturingDate;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public GregorianCalendar getManufacturingDate() {
return manufacturingDate;
}
public void setManufacturingDate(GregorianCalendar manufacturingDate) {
this.manufacturingDate = manufacturingDate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
使用以下程式碼更新 Car.java −
Car.java
package com.tutorialspoint.model;
public class Car {
private int id;
private String price;
private String manufacturingDate;
private String brand;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getManufacturingDate() {
return manufacturingDate;
}
public void setManufacturingDate(String manufacturingDate) {
this.manufacturingDate = manufacturingDate;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
使用以下程式碼更新 CarMapper.java −
CarMapper.java
package com.tutorialspoint.mapper;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import com.tutorialspoint.entity.CarEntity;
import com.tutorialspoint.model.Car;
import java.util.List;
import java.util.UUID;
@Mapper( imports = UUID.class )
public interface CarMapper {
@Mapping(source = "name", target = "name", defaultExpression = "java(UUID.randomUUID().toString())")
@Mapping(target = "brand", constant = "BMW")
@Mapping(source = "price", target = "price", numberFormat = "$#.00")
@Mapping(source = "manufacturingDate", target = "manufacturingDate", dateFormat = "dd.MM.yyyy")
Car getModelFromEntity(CarEntity carEntity);
List<String> getListOfStrings(List<Integer> listOfIntegers);
List<Car> getCars(List<CarEntity> carEntities);
}
使用以下程式碼更新 CarMapperTest.java −
CarMapperTest.java
package com.tutorialspoint.mapping;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.util.Arrays;
import java.util.GregorianCalendar;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
import com.tutorialspoint.entity.CarEntity;
import com.tutorialspoint.mapper.CarMapper;
import com.tutorialspoint.model.Car;
public class CarMapperTest {
private CarMapper carMapper = Mappers.getMapper(CarMapper.class);
@Test
public void testEntityToModel() {
CarEntity entity = new CarEntity();
entity.setPrice(345000);
entity.setId(1);
entity.setManufacturingDate(new GregorianCalendar(2015, 3, 5));
CarEntity entity1 = new CarEntity();
entity1.setPrice(445000);
entity1.setId(2);
entity1.setManufacturingDate(new GregorianCalendar(2015, 3, 5));
List<CarEntity> carEntities = Arrays.asList(entity, entity1);
Car model = carMapper.getModelFromEntity(entity);
assertEquals("$345000.00",model.getPrice());
assertEquals(entity.getId(), model.getId());
assertEquals("BMW", model.getBrand());
assertEquals("05.04.2015", model.getManufacturingDate());
List<Integer> list = Arrays.asList(1,2,3);
List<String> listOfStrings = carMapper.getListOfStrings(list);
List<Car> listOfCars = carMapper.getCars(carEntities);
assertEquals(3, listOfStrings.size());
assertEquals(2, listOfCars.size());
}
}
執行以下命令以測試對映。
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.CarMapperTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.035 sec Running com.tutorialspoint.mapping.DeliveryAddressMapperTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec Running com.tutorialspoint.mapping.StudentMapperTest Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Results : Tests run: 4, Failures: 0, Errors: 0, Skipped: 0 ...
廣告