resultMap属性:
id:resultMap的唯一标识
type:java实体类
resultMap子元素
id:
一般对应数据库中该行的主键id,设置此项可提高mybatis性能
result:
映射到Javabean的某个“简单类型”属性
association:
映射到Javabean的某个“复杂数据类型”属性,比如Javabean类
collection:
映射到Javabean的某个“复杂类型”属性,比如集合
1. association
(1)复杂的类型关联,一对一
(2)内部嵌套
映射一个嵌套Javabean属性
(3)属性
property:映射数据库列的实体类对象属性
JavaType:完整Java类名或者别名
resultMap:引用外部resultMap
(4)子元素
id
result:
property:映射数据库列的实体对象的属性
column:数据库列名或者别名
示例代码:
<!--根据用户角色id查询用户信息 -->
<resultMap type="Role" id="roleResult">
<id property="id" column="r_id"/>
<result property="roleCode" column="roleCode"/>
<result property="roleName" column="roleName"/>
</resultMap>
<resultMap type="User" id="userRoleResult">
<id property="id" column="id"/>
<result property="userCode" column="userCode"/>
<result property="userName" column="userName"/>
<result property="userRole" column="userRole"/>
<association property="role" javaType="Role" resultMap="roleResult">
</association>
</resultMap>
<select id="getUserListByRoleId" parameterType="Integer" resultMap="userRoleResult">
select u.*, r.id as r_id, r.roleCode, r.roleName from smbms_user u ,smbms_role r where u.userRole =#{userRole} and u.userRole = r.id
</select>
2. collection
(1)collection
复杂数据类型集合,一对多
内部嵌套
映射一个嵌套结果集到一个列表
属性
property:映射数据库列的实体类对象的属性
ofType:完整java类名或别名(集合所包含的类型)
resultMap:引用外部resultMap
子元素
id
result
property:映射数据库列的实体对象的属性
column:数据库列名或者别名
<!--根据用户id获取用户信息以及地址列表 -->
<resultMap type="Address" id="addressResult">
<id property="id" column="id"/>
<result property="contact" column="contact"/>
<result property="addressDesc" column="addressDesc"/>
<result property="tel" column="tel"/>
<result property="postCode" column="postCode"/>
</resultMap>
<resultMap type="User" id="userAddressResult">
<id property="id" column="id"/>
<result property="userCode" column="userCode"/>
<result property="userName" column="userName"/>
<collection property="addressList" ofType="Address" resultMap="addressResult">
</collection>
</resultMap>
<select id="getAddressListByUserId" resultMap="userAddressResult" parameterType="Integer">
select u.*,a.id as a_id , a.contact,a.addressDesc,a.tel,a.postCode from smbms_user u,smbms_address a where u.id = a.userId and u.id = #{id}
</select>
resultMap自动映射(automappingBehavior)的三个自动匹配级别
NONE:禁止自动匹配
PARTIAL(默认):自动匹配所有属性,内部嵌套除外
FULL:自动匹配所有