Using Model Mapper in SpringBoot

Sopheary Rin
1 min readNov 30, 2023

--

What is Model Mapper?

Model Mapper is a java library used to map between the Entity object and DTO object.

Steps to do it:

  1. Add the dependency in pom.xml
<!-- https://mvnrepository.com/artifact/org.modelmapper/modelmapper -->
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>3.2.0</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>

2. Add ModelMapper Configuration, create new class in configuration package. Named it as ModelMapperConfiguration

@Configuration
public class ModelMapperConfiguration {
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
}

3. Product Model Class and ProductRequest Class

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "products")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int productId;

private String description;

@Column(nullable = false)
@NotNull
private double price;

@Column(nullable = false)
@NotNull
private double stock;

public Product(String description, double price, double stock) {
this.description = description;
this.price = price;
this.stock = stock;
}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProductRequest {
private String description;

@Column(nullable = false)
@NotNull
private double price;

@Column(nullable = false)
@NotNull
private double stock;
}

4. Next we map between Model Class and DTO class in ProductServiceImp

@Service
@Log4j2
public class ProductServiceImp {

private ProductRepository productRepository;
private ModelMapper modelMapper;

public ProductService(ProductRepository productRepository,
ModelMapper modelMapper) {
this.productRepository = productRepository;
this.modelMapper = modelMapper;
}


public Product addProduct(ProductRequest productRequest){

// Map ProductRequest to Product using ModelMapper
Product product = modelMapper.map(productRequest, Product.class);

log.info("adding product");
// Save the mapped Product to database
return productRepository.save(product);
}
}

--

--

Sopheary Rin
Sopheary Rin

Responses (1)