MapStruct - 使用 numberFormat



MapStruct 無縫地處理將數字轉換為字串所需的格式。我們可以在 @Mapping 註釋期間將所需格式作為 numberFormat 傳遞。例如,考慮一種情況,其中儲存在數字中的金額以貨幣格式顯示。

  • 來源 - 實體的價格為 350。

  • 目標 - 模型顯示價格為 $350.00。

  • numberFormat - 使用格式 $#.00

示例

在 Eclipse 中開啟 對映隱式型別轉換 章節中更新的專案對映。

使用以下程式碼建立 CarEntity.java −

CarEntity.java

package com.tutorialspoint.entity;

public class CarEntity {
   private int id;
   private double price;
   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;
   }
}

使用以下程式碼建立 Car.java −

Car.java

package com.tutorialspoint.model;

public class Car {
   private int id;
   private String price;
   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;
   }
}

使用以下程式碼建立 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;

@Mapper
public interface CarMapper {
   @Mapping(source = "price", target = "price", numberFormat = "$#.00")
   Car getModelFromEntity(CarEntity carEntity);
}

使用以下程式碼建立 CarMapperTest.java −

CarMapperTest.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.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);
      Car model = carMapper.getModelFromEntity(entity);
      assertEquals(model.getPrice(), "$345000.00");
      assertEquals(entity.getId(), model.getId());
   }
}

執行以下命令來測試對映。

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
...
廣告
© . All rights reserved.