使用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所有返回字段的映射。
MyBatis学习笔记之resultMap