如何让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。可以使用 .
中描述的默认方法在映射器中完成
我有一个设备 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
另一种选择是从 java 中的字段列表重新创建 POJO。可以使用