Как заставить mybatis отображать список в Object - PullRequest
0 голосов
/ 13 марта 2019

У меня есть таблица устройств, которая определяет сущность устройства:

device:
   id:
   type:

И у меня есть таблица атрибутов, которая записывает атрибуты устройства:

device_attr:
   device_id:
   key:
   value:

Как я могу написать сопоставителисохранить устройство POJO в таблицу и как загрузить атрибуты в POJO?спасибо.

Функция Pivot может соответствовать этому, но mysql не поддерживает ее, и ее производительность не очень хорошая.

1 Ответ

1 голос
/ 14 марта 2019

Чтобы сохранить объект, вы можете использовать динамический sql для итерации по свойствам POJO и генерировать INSERT операторы, аналогичные описанным в Как использовать MyBatis для итерации всех полей объекта? :

<bind name="deviceProperties"
  value="@org.apache.commons.beanutils.BeanUtils@describe(myDevice).entrySet()" />

<foreach index="propertyName" item="propertyValue" collection="deviceProperties">
   INSERT INTO device_attr (key, value) values (
        ${propertyName}, ${propertyValue});
</foreach>

Не существует готового решения сделать то же самое для выбора.

Вам нужно сделать то, что называется table pivot, но это очень база данных определенная .

Другой вариант - воссоздать POJO из списка полей в Java.Это можно сделать в маппере, используя методы по умолчанию, как описано в этом ответе .

...