Table of Contents
Mybatis中 collection 和 association 的区别?
01 结果映射(resultMap):集合(关联)映射
1.1 代码示例
<!-- 结果映射 -->
<resultMap id="detailedBlogResultMap" type="Blog">
<id property="id" column="blig_id"/>
<result property="title" column="blog_title"/>
<!-- 关联映射:用嵌套结果实现 -->
<association property="author" javaType="Author">
<id property="id" column="author_id"/>
<result property="username" column="author_username"/>
</association>
<!-- 关联映射:用嵌套查询实现 -->
<association property="author" javaType="Author" select="" colunm="">
这里并没有<id /> 和<result /> 标签,嵌套结果才需要
</association>
<!-- 集合映射:用嵌套结果实现 -->
<collection property="posts" ofType="Post">
<id property="id" column="post_id"/>
<result property="subject" column="post_subject"/>
</collection>
<!-- 集合映射:用嵌套查询实现 -->
<collection property="posts" ofType="Post" select="" colunm="">
这里并没有<id /> 和<result /> 标签,嵌套结果才需要
</collection>
</collection>
</resultMap>
1.2 resultMap元素及属性说明
<resultMap 属性有 id=" 唯一标识" type="类的完全限定名, 或者一个类型别名" >
包含标签有:
id 和 result 元素都将一个列的值映射到一个简单数据类型(String, int, double, Date 等)的属性或字段。
<id property="" column=""/> //主键属性/字段的映射,property是实体类的属性,column是数据库的列名
<result property="" column=""/> //普通属性/字段的映射,property是实体类的属性,column是数据库的列名
<!-- 关联映射:用嵌套结果实现 -->
<association property="" javaType="">
<id property="id" column="author_id"/>
<result property="username" column="author_username"/>
</association>
<!-- 关联映射:用嵌套查询实现 -->
<association property="" javaType="" select="" colunm="" fetchType="">