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>
原文地址:https://www.cnblogs.com/pangkang/p/8059274.html