resultMap介绍
resultMap用于实体类和表映射,功能十分强大
如果使用的好,那么对项目是很大的帮助
基本标签
id
映射主键,column指定表列的名称,property指定实体的字段名
result
映射主键之外的列,column和property
扩展标签
association
负责映射类型为实体类的字段,常见于多对一或者一对一映射
只有property字段名
<!-- 声明resultMap用于User实体类和user_info的表映射-->
<resultMap id="identityCardMap" type="identityCard">
<!-- id用于映射主键,property指定实体的字段名,column指定表列的名称 -->
<id property="identityCardId" column="cell_phone_number_id"/>
<!-- 其他属性使用result标签来映射-->
<result property="identityCard" column="cell_phone_number"/>
<!-- 多对一或者一对一映射 property代表字段-->
<association property="user">
<id column="user_id" property="userId"/>
<result column="name" property="name"/>
</association>
</resultMap>
collection
负责映射类型为集合<实体类>的字段,常见于多对多或者一对多映射
property代表字段名 ofType代表类型(没有定义类型会出现空指针异常)
<!-- 声明resultMap用于实体类和表映射-->
<resultMap id="credentialsMap" type="credentials">
<!-- id用于映射主键,property指定实体的字段名,column指定表列的名称 -->
<id property="credentialsId" column="credentials_id"/>
<!-- 其他属性使用result标签来映射-->
<result property="credentialsName" column="credentials_name"/>
<!-- 多对多映射 property代表字段 ofType代表类型-->
<collection property="users" ofType="entity.User">
<id property="userId" column="user_id"/>
<result property="name" column="name"/>
</collection>
</resultMap>
注意
mybatis是通过id标签进行的合并成集合<实体类>,所以为了保证数据的合理性。
在查询多对多或者一对多关系时为了保证所查询的数据中集合合并,
就需要设置id(主键)唯一值保证数据的正常合并