首页 > 代码库 > MyBatis学习笔记之resultMap

MyBatis学习笔记之resultMap

使用mybatis不能不说的是resultMap

相比resultClass来说resultMap可以适应更复杂的关系映射,允许指定字段的数据类型,支持“select *” ,并不要求定义 ResultSet所有返回字段的映射

在resultMap中配置如下, 主要是搞懂关联关系怎么配置就可以了,无非就是一对一,一对多, 多对多:

 

  <resultMap id="BaseResultMap" type="类的全路径" >    <id column="表id列" property="对应类属性" jdbcType="插入到数据库的类型" />    <result column="表其它列" property="对应类属性" jdbcType="插入到数据库的类型" />
/*如果要映射的类中有对象作为类属性(类中包含其它类)的时候需要在resultMap中使用association,
 如果是集合(一对多)时使用collection,使用collection时如果使用column 一般与select连用*/  
<association property="projectOrg" javaType="com.ldrc.srm.ou.dal.dataobject.projectinfo.project.ProjectOrg"   resultMap="ProjectOrgMapper.BaseResultMap">  </association>  <collection property="roleList" column="US_ID" ofType="com.zjx.entity.system.Role"
     
resultMap="RoleMapper.BaseResultMap" select="RoleMapper.selectUserRoles">
 </collection> </resultMap>

resultMap 是最常用和最重要的属性。ResultMap 属性的值等于预先定义的 resultMap 

素的 name 属性值(参照下面的例子) 。使用 resultMap 可以控制数据如何从结果集中取出,以及哪一个属性匹配哪一个字段。不象使用 resultClass 的自动映射方法,resultMap 属性可以允许指定字段的数据类型,NULL 的替代值复杂类型映射(包括其他 Java Bean,集合类型和基本类型包装类) 。关于 resultMap 的详细讨论放在以后的章节, 这里只给出一个相关 statement 的 resultMap的例子。

<resultMap id=get-product-result” class=com.ibatis.example.Product>

  <result property=id” column=PRD_ID/>

  <result property=description” column=PRD_DESCRIPTION/>

</resultMap>

<statement id=getProduct” resultMap=get-product-result”>

  select * from PRODUCT

</statement>

上面的例子中,通过 resultMap 的定义,查询语句得到的 ResultSet 被映射成 Product 

象。resultMap 定义的“id”属性值将赋予“PRO_ID”字段值,而“description”属性值将赋予“PRD_DESCRIPTION”字段值。注意 resultMap 支持“select *” ,并不要求定义 ResultSet所有返回字段的映射。