Beanmapper is a Java library for mapping dissimilar Java classes with similar names. The use cases for Beanmapper are the following:
- mapping from forms to entities, because:
- for security reasons you want to accept only a limited number of fields as input
- the form fields are simplified to support frontend processing
- mapping from entities to results, because:
- you want to simplify the result for frontend processing
- you want to expose a limited number of fields for security reasons
In order to use Beanmapper in your project, simply add the following Maven dependency:
<dependency>
<groupId>io.beanmapper</groupId>
<artifactId>beanmapper</artifactId>
<version>4.1.0</version>
</dependency>
You want to map two dissimilar classes with no hierarchical relation (save java.lang.Object), but with a fairly similar naming schema for the fields.
public class SourceClass {
public Long id;
public String name;
public LocalDate date;
}
public class TargetClass {
public String name;
public LocalDate date;
}
BeanMapper beanMapper = new BeanMapper();
SourceClass source = new SourceClass();
source.id = 42L;
source.name = "Henk";
source.date = LocalDate.of(2015, 4, 1));
TargetClass target = beanMapper.map(source, TargetClass.class);
The library can help you with the following situations:
- nested dissimilar classes
- ignoring parts
- mapping to fields with other names, even if nested
- settings defaults if no value is found
- unwrapping class layers in order to flatten the structure
- works directly on the bean, no getters/setters required
- supports a combination of automated and manual processing
- adding conversion modules for data types
Beanmapper is not a library for deep-copying classes. Whenever Beanmapper can get away with a shallow copy, it will do so. Deep-copying is reserved for dissimilar classes.
Find the rest of the documentation on beanmapper.io.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.