Spring Boot + MapStruct
Nov 19, 2020
MapStruct is a one of most powerful library to mapping in Java
Let’s say we have Customer.java and CustomerDTO.java
Customer.java
@Entity
@Data
public class Customer { @Id
private String id;
private String firstName;
private String lastName;
}
CustomerDTO.java
@Data
public class CustomerDTO {
private String firstName;
private String lastName;
}
To integrate MapStruct with Spring Boot, there are few steps to do.
Step 1 — Add dependency in pom.xml
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.3.1.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.1.Final</version>
<scope>provided</scope>
</dependency>
Step 2 — Create Mapper for our model (eg. CustomerMapper)
CustomerMapper.java
@Mapper(componentModel = "spring")
public interface CustomerMapper {
CustomerDTO toDto(Customer customer);
}
Step 3 — Use it!
@Autowired
private CustomerMapper mapper;
Step 4 — Map it!
Customer customer = ...
CustomerDTO dto = mapper.toDto(customer);
Done!