Получить значения из HashMap и заполнить объект Java - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть карта, заполненная из базы данных. Мне нужно получить значения оттуда к объекту. Имена полей в POJO и имена ключей в объекте Map различны. Я сделал это, как показано ниже. Есть ли эффективный способ сделать это

 Map<String ,Object> map; //retrieved from database

Employee e = new Employee();
if(map!=null) {
    if(map.containsKey("name")) {
        e.setFirstName(map.get("name"));
    }
    if(map.containsKey("ads")) {
        e.setMyAddress(map.get("ads"));
    }
    if(map.containsKey("country")) {
        e.setDealCountry(map.get("country"));
    }
    if(map.containsKey("keyId")) {
        e.Id(map.get("keyId"));
    }
}



public class Employee {
    String firstName;
    String id;
    String myAdreess;
    String dealCountry;
//setter getters
}

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Вы можете взглянуть на Hibernate или другие ORM. Они автоматически выполняют сопоставление для вас.

Вот, например, ссылка на Hibernate ORM: https://hibernate.org/

Это проще и быстрее, чем сделать сопоставление вручную. ;)

0 голосов
/ 26 февраля 2020

Вы можете использовать Biavonsumer java8 +, чтобы определить установщик для каждого из ключей карты:

    Map<String, BiConsumer<Employee, String>> consumerMap = new HashMap<>();
    consumerMap.put("name", Employee::setFirstName);
    consumerMap.put("ads", Employee::setMyAddress);
    consumerMap.put("country", Employee::setDealCountry);
    //and so on

    Map<String, String> map = new HashMap<>();//the data from your database 
    Employee e = new Employee();
    if (map != null) {
        consumerMap.forEach((key, value) -> {
            if (map.containsKey(key)) {
                //value is the BiConsumer
                value.accept(e, map.get(key));
            }
        });
    }

ForEach выполняет итерацию по всем определенным сопоставлениям, а затем проверяет, имеет ли ваш Map из базы данных соответствующие ключи и применяет данные.

Это не требует (ручного) отражения, и отображение ключа карты на установщик очень прямое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...