Fast as hand-written code with zero compromise.
updated GroupId Name
## Status
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/ab9b20d7580c4e5d852e6cbe1de509a2)](https://www.codacy.com/app/alessandro-vurro_2/jmapper-core?utm_source=github.com&utm_medium=referral&utm_content=jmapper-framework/jmapper-core&utm_campaign=Badge_Grade) [![Build Status](https://travis-ci.org/jmapper-framework/jmapper-core.svg?branch=master)](https://travis-ci.org/jmapper-framework/jmapper-core)
##### Write the configuration using what you prefer: Annotation, XML or API.
Most relevant features:
* [One to Many](https://github.com/jmapper-framework/jmapper-core/wiki/One-To-Many) and [Many to One](https://github.com/jmapper-framework/jmapper-core/wiki/Many-To-One) relationship
* [dynamic conversions](https://github.com/jmapper-framework/jmapper-core/wiki/Conversion-examples), whose body adapts to every relationship
* [inherited configurations](https://github.com/jmapper-framework/jmapper-core/wiki/Inheritance-examples), you can split the configuration along the hierarchy
* and more..
**especially its use is intuitive**
## Configuration
Below it is shown the same configuration in the three types allowed
##### Annotation
```java
class Destination{ class Source{
@JMap
private String id; private String id;
@JMap("sourceField")
private String destinationField; private String sourceField;
private String other; private String other;
// getters and setters... // getters and setters...
} }
<jmapper>
<class name="it.jmapper.bean.Destination">
<attribute name="id">
<value name="id"/>
</attribute>
<attribute name="destinationField">
<value name="sourceField">
</attribute>
</class>
</jmapper>
JMapperAPI jmapperAPI = new JMapperAPI()
.add(mappedClass(Destination.class)
.add(attribute("id")
.value("id"))
.add(attribute("destinationField")
.value("sourceField")));
JMapper<Destination, Source> mapper;
mapper = new JMapper<>(Destination.class, Source.class);
mapper = new JMapper<>(Destination.class, Source.class, xml);
mapper = new JMapper<>(Destination.class, Source.class, jmapperAPI);
Source source = new Source("id", "sourceField", "other");
Destination destination = mapper.getDestination(source);
destination ["id", "sourceField", null]
With JMapper we have all the advantages of dynamic mapping with the performance of static code, with 0 memory consumption.
Required java 8+
Would you like to contribute to the development of JMapper?
contact us ([email protected]) for more information.