如何让mybatis将列表映射到对象

How to make mybatis to map a list to Object

我有一个设备 table,它定义了设备实体:

device:
   id:
   type:

而且我有一个属性table记录了设备的属性:

device_attr:
   device_id:
   key:
   value:

如何编写映射器以将设备 POJO 保存到 table 中以及如何将属性加载到 POJO 中?谢谢。

pivot函数可能满足这个,但是,mysql不支持,而且性能不好。

为了保存对象,您可以使用动态 sql 遍历 POJO 属性并生成类似于 中描述的 INSERT 语句:

<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>

select没有开箱即用的解决方案。

你需要做所谓的table pivot,但这是very specific

另一种选择是从 java 中的字段列表重新创建 POJO。可以使用 .

中描述的默认方法在映射器中完成