datus позволяет определять преобразование данных с помощью простой в использовании системы fluent builder для обработки дополнительной обработки или крайних случаев. Больше никаких заводских классов котельных плит для изменяемых:
class Person { //getters + setters omitted for brevity private String firstName; private String lastName; } class PersonDTO { //getters + setters + empty constructor omitted for brevity private String firstName; private String lastName; } //the mutable API defines a mapping process by multiple getter-setter steps Mappermapper = Datus.forTypes(Person.class, PersonDTO.class) .mutable(PersonDTO::new) .from(Person::getFirstName).into(PersonDTO.setFirstName) .from(Person::getLastName) .given(Objects::nonNull, ln -> ln.toUpperCase()).orElse("fallback") .into(PersonDTO::setLastName) .from(/*...*/).into(/*...*/) .build();
и неизменяемые типы:
class Person { //getters + constructor omitted for brevity private final String firstName; private final String lastName; } class PersonDTO { //getters omitted for brevity private final String firstName; private final String lastName; public PersonDTO(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } } //define a building process for each constructor parameter, step by step //the immutable API defines constructor parameters in their declaration order Mappermapper = Datus.forTypes(Person.class, PersonDTO.class) .immutable(PersonDTO::new) .from(Person::getFirstName).to(ConstructorParameter::bind) .from(Person::getLastName) .given(Objects::nonNull, ln -> ln.toUpperCase()).orElse("fallback") .to(ConstructorParameter::bind) .build();
Легко интегрируется с Spring и т.д. – прочтите полное руководство по использованию менее чем за 20 минут.
Оригинал: “https://dev.to/roookeee/datus-a-fluent-java-data-mapping-library-2l3c”