如何使mybatis将列表映射到Object

问题描述 投票:0回答:1

我有一个定义设备实体的设备表:

device:
   id:
   type:

我有一个属性表,记录设备的属性:

device_attr:
   device_id:
   key:
   value:

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

Pivot函数可能会遇到这种情况,但是,mysql不支持它,而且它的性能也不好。

mybatis spring-mybatis
1个回答
1
投票

为了保存对象,您可以使用动态sql迭代POJO属性并生成类似于INSERT中描述的How to use MyBatis to iterate all fields of an object?语句:

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

对于选择,没有开箱即用的解决方案。

你需要做所谓的qazxsw poi,但这是qazxsw poi qazxsw poi qazxsw poi。

另一种选择是从java中的字段列表重新创建POJO。它可以使用此table pivot中描述的默认方法在映射器中完成。

© www.soinside.com 2019 - 2024. All rights reserved.