106 lines
2.8 KiB
Markdown
106 lines
2.8 KiB
Markdown
# mapstruct-support
|
|
|
|
Additional DefaultAccessorNamingStrategy to support fluent API withXYZ setters.
|
|
|
|
[](https://github.com/mapstruct/mapstruct/blob/master/LICENSE.txt)
|
|
|
|
* [What is MapStruct?](#what-is-mapstruct)
|
|
* [Features](#features)
|
|
* [Usage](#usage)
|
|
* [Example](#example)
|
|
* [Requirements](#requirements)
|
|
* [Building from Source](#building-from-source)
|
|
* [Licensing](#licensing)
|
|
|
|
## What is MapStruct?
|
|
|
|
MapStruct is a Java [annotation processor](https://docs.oracle.com/javase/6/docs/technotes/guides/apt/index.html) for the generation of type-safe and performant mappers for Java bean classes.
|
|
|
|
To learn more about MapStruct have a look at the [mapstruct](https://github.com/mapstruct/mapstruct) repository or the [website](https://mapstruct.org/)
|
|
|
|
## Features
|
|
|
|
Mapstruct default naming strategy detects the methods `withFirstName` and `withLastName` (see example below) as extra
|
|
target fields and therefore cause an error, when the mapper is annotated with
|
|
`unmappedTargetPolicy = ReportingPolicy.ERROR`.
|
|
|
|
The additional naming strategy makes Mapstruct ignore the withXYZ setters.
|
|
|
|
## Usage
|
|
|
|
To use the extended naming strategy, just include it as project dependency alongside with mapstruct.
|
|
|
|
```xml
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.mapstruct</groupId>
|
|
<artifactId>mapstruct</artifactId>
|
|
<version>1.5.5.Final</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>de.muehlencord.mapstruct</groupId>
|
|
<artifactId>mapstruct-support</artifactId>
|
|
<version>1.5.5</version>
|
|
</dependency>
|
|
</dependencies>
|
|
```
|
|
|
|
## Example
|
|
|
|
```java
|
|
public class Person {
|
|
|
|
private String firstName;
|
|
private String lastName;
|
|
|
|
// standard getter / setter - these are covered by mapstruct by default */
|
|
public String getFirstName() {
|
|
return firstName;
|
|
}
|
|
|
|
public void setFirstName(String firstName) {
|
|
this.firstName = firstName;
|
|
}
|
|
|
|
public String getLastName() {
|
|
return lastName;
|
|
}
|
|
|
|
public void setLastName(String lastName) {
|
|
this.lastName = lastName;
|
|
}
|
|
|
|
/* fluent setter - these are detected as extra setters and would
|
|
cause a mapping exception, if the mapper is annotated with
|
|
unmappedTargetPolicy = ReportingPolicy.ERROR.
|
|
*/
|
|
|
|
public Person withFirstName(String firstName) {
|
|
this.firstName = firstName;
|
|
return this;
|
|
}
|
|
|
|
public Person withLastName(String lastName) {
|
|
this.lastName = lastName;
|
|
return this;
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
## Requirements
|
|
|
|
The MapStruct plugin requires Java 11 or later
|
|
|
|
## Building from Source
|
|
mapstruct-support uses maven as build system. Simple execute
|
|
|
|
```shell
|
|
mvn clean install
|
|
```
|
|
|
|
## Licensing
|
|
|
|
The MapStruct plugin is licensed under the Apache License, Version 2.0 (the "License"); you may not use it except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.
|