association 和 collection的区别

912 阅读1分钟

association:一对一,联表查询之后如果需要放到一个对象字段中可以指定另一个表的数据到某个对象里面
常用属性:

  • 1.javaType: 指定映射类的地址 文件夹之间使用.隔开
  • 2.resultMap:指定映射的resultMap
  • 3.property:对应的参数
    collection:一对多,左连接后一条记录对应多条记录 如果需要将这些记录放到一个主类的一个list字段中可以使用
    常用属性
  • 1.javaType: 指定映射类的地址 文件夹之间使用.隔开
  • 2.resultMap:指定映射的resultMap
  • 3.property:对应的参数

collection嵌association
遇到一个需求,需要连接三个表。顺序为一对多,再一对一。数据结构如下

{
    list:[{
        param:{},            
    }]
}

使用的是mybatis,要转成实体类需要映射,但网上对于collection嵌association的文献较少,找了挺久。最后写好记录一下

<resultMap id="A" type="">
  <id property="id" column="A_ID"></id>
  <result property="param" column="A_PARAM"></result>
</resultMap>
<resultMap id="B" type="">
  <id property="id" column="B_ID"></id>
</resultMap>
<resultMap id="Model" type="" extends="BaseResultMap">
  <collection property="" ofType="">
    <association property="A" resultMap="A">
    </association>
    <association property="B" resultMap="B">
    </association>
  </collection>
</resultMap>

需要注意的事

  • collection里面的association的映射需要使用resultMap,单纯使用ofType或者在标签内使用id,result字段会映射不成功
  • 使用collection的话第一层的resultMap必须指定id