Mybatis 一对多 配置文件
当一个Entity中包含的属性有对象和对象集合时,用mybatis映射时要在Entity中添加一个字段来唯一标识当前的Entity对象。否则查询的Entity集合中的对象会被覆盖掉。
如下一个POJO类作为Entity:
itemsEntity属性是一个对象,ddls属性是一个对象集合。这时候如果不加id属性,得出的Entity集合结果中,itemsEntity会被最后一个对象覆盖。id属性用来唯一标识Entity。
public class WsCheckItemsWithDdlEntity implements Serializable{ /** * */ private static final long serialVersionUID = -1613214411222881541L; private int id; private WsCheckItemsEntity itemsEntity; private ArrayList<WsCheckItemDict> ddls; public ArrayList<WsCheckItemDict> getDdls() { return ddls; } public void setDdlNames(ArrayList<WsCheckItemDict> ddls) { this.ddls = ddls; } public WsCheckItemsEntity getItemsEntity() { return itemsEntity; } public void setItemsEntity(WsCheckItemsEntity itemsEntity) { this.itemsEntity = itemsEntity; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
对应的sqlmap中resultMap写法如下:
<resultMap id="CheckItemsWithDdlResultMap" type="QQQQQQ.WsCheckItemsWithDdlEntity"> <result property="id" column="id"></result> <association property="itemsEntity" javaType="QQQQQQQQ.WsCheckItemsEntity"> <result property="XXXX" column="XXXXXX"></result> <result property="YYYY" column="YYYYYY"></result> ... </association> <collection property="ddls" ofType="QQQQQQQQ.WsCheckItemDict"> <result property="XXXX" column="XXXXXX"></result>
<result property="YYYY" column="YYYYYY"></result>
... </collection> </resultMap>