Mybatis之resultMap(补充说明)

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:自动匹配所有
原创文章 28 获赞 41 访问量 1033

猜你喜欢

转载自blog.csdn.net/wenquan19960602/article/details/104328876