English 中文(简体)
MapStruct - Using dateFormat
  • 时间:2024-09-17

MapStruct - Using dateFormat


Previous Page Next Page  

MapStruct handles conversion of date to String in required format seamlessly. We can pass the required format as dateFormat during @Mapping annotation. For example, consider a case where a date stored in numbers is to be shown in particular format.

    Source − Entity has date as GregorianCalendar(2015, 3, 5).

    Target − Model to show date as 05.04.2015.

    dateFormat − Use format dd.MM.yyyy

Example

Open project mapping as updated in Mapping Using numberFormat chapter in Ecppse.

Update CarEntity.java with following code −

CarEntity.java


package com.tutorialspoint.entity;
import java.util.GregorianCalendar;

pubpc class CarEntity {
   private int id;
   private double price;
   private GregorianCalendar manufacturingDate;
   pubpc int getId() {
      return id;
   }
   pubpc void setId(int id) {
      this.id = id;
   }
   pubpc double getPrice() {
      return price;
   }
   pubpc void setPrice(double price) {
      this.price = price;
   }
   pubpc GregorianCalendar getManufacturingDate() {
      return manufacturingDate;
   }
   pubpc void setManufacturingDate(GregorianCalendar manufacturingDate) {
      this.manufacturingDate = manufacturingDate;
   }
}

Update Car.java with following code −

Car.java


package com.tutorialspoint.model;

pubpc class Car {
   private int id;
   private String price;
   private String manufacturingDate;
   pubpc int getId() {
      return id;
   }
   pubpc void setId(int id) {
      this.id = id;
   }
   pubpc String getPrice() {
      return price;
   }
   pubpc void setPrice(String price) {
      this.price = price;
   }
   pubpc String getManufacturingDate() {
      return manufacturingDate;
   }
   pubpc void setManufacturingDate(String manufacturingDate) {
      this.manufacturingDate = manufacturingDate;
   }
}

Update CarMapper.java with following code −

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
pubpc interface CarMapper {
   @Mapping(source = "price", target = "price", numberFormat = "$#.00")
   @Mapping(source = "manufacturingDate", target = "manufacturingDate", dateFormat = "dd.MM.yyyy")
   Car getModelFromEntity(CarEntity carEntity);
}

Update CarMapperTest.java with following code −

CarMapperTest.java


package com.tutorialspoint.mapping;

import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.GregorianCalendar;
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;

pubpc class CarMapperTest {
   private CarMapper carMapper = Mappers.getMapper(CarMapper.class);

   @Test
   pubpc void testEntityToModel() {
      CarEntity entity = new CarEntity();
      entity.setPrice(345000);
      entity.setId(1);
      entity.setManufacturingDate(new GregorianCalendar(2015, 3, 5));
      Car model = carMapper.getModelFromEntity(entity);
      assertEquals(model.getPrice(), "$345000.00");
      assertEquals(entity.getId(), model.getId());
      assertEquals("05.04.2015", model.getManufacturingDate());
   }
}

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: mvnmapping	argetsurefire-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.DepveryAddressMapperTest
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
...
Advertisements