一、ResultMapCollection概述
在MyBatis中,查询结果集通常会转化为Java对象,而ResultMapCollection就是用于映射查询结果集中每个记录的Java对象集合。一个ResultMapCollection可以包含多个ResultMap,并且每个ResultMap定义了如何将一条查询结果转换为一个Java对象。一个ResultMap可以定义一个复杂对象或嵌套多个ResultMap来定义一个复杂对象图。
二、定义ResultMapCollection
定义ResultMapCollection通常可以通过iBatis的Mapper XML实现,定义时常用的两个标签是和。
1、使用定义
<resultMap id="UserMap" type="User">    
    <id property="id" column="id" />    
    <result property="name" column="name" />    
    <result property="age" column="age" />
</resultMap>像上面这样使用定义一个简单的ResultMap。其中id属性为该ResultMap的ID,type属性为该ResultMap解析出的Java对象类型。
2、使用定义
在使用定义ResultMapCollection时,需要为每个ResultMap指定一个ID和一个返回类型,每个ResultMap都有唯一一个ID,这个ID被用于关联查询语句和Java对象属性。下面是一个简单的使用定义的例子:
<resultMapCollection id="allUser" type="java.util.ArrayList">   
    <resultMap id="UserMap" type="User">    
        <id property="id" column="id" />    
        <result property="name" column="name" />    
        <result property="age" column="age" />
    </resultMap>    
</resultMapCollection>三、使用ResultMapCollection实现嵌套查询
ResultMapCollection可以用于嵌套查询,通过在ResultMap中嵌套其他ResultMap(通过标签),可以构建出具有复杂类型的Java对象。
<resultMap id="UserMap" type="User">    
    <id property="id" column="id" />    
    <result property="name" column="name" />    
    <result property="age" column="age" />
    <association property="department" javaType="Department" resultMap="DepartmentMap"/>
</resultMap>
<resultMap id="DepartmentMap" type="Department">    
    <id property="id" column="id" />    
    <result property="name" column="name" />    
</resultMap>四、使用ResultMapCollection实现动态查询
ResultMapCollection可以被用于动态查询,使用SQL选择将不同的ResultMapAnnotation集合作为ResultMapCollection返回。
<resultMapCollection id="allUser" type="java.util.ArrayList">    
    <resultMap id="UserMap1" type="User">    
        <id result="id" column="id" />    
        <result property="name" column="name" />    
    </resultMap>
    <resultMap id="UserMap2" type="User">    
        <id result="id" column="id" />    
        <result property="address" column="address" />    
        <result property="tel" column="tel" />    
    </resultMap>    
</resultMapCollection>五、使用ResultMapCollection实现属性合并
ResultMapCollection可以用于属性合并,即将多个ResultMapAnnotation组合成一个复合对象。
<resultMapCollection id="allUser" type="java.util.ArrayList">    
    <resultMap id="EmpMap" type="Emp">    
        <id result="id" column="id" />    
        <association property="detail" javaType="Detail" resultMap="DetailMap" />    
        <association property="education" javaType="Education" resultMap="EducationMap" />    
    </resultMap>
    <resultMap id="DetailMap" type="Detail">    
        <result property="salary" column="salary" />    
        <result property="joinDate" column="join_date" />    
    </resultMap>
    <resultMap id="EducationMap" type="Education">     
        <result property="degree" column="degree" />    
        <result property="school" column="school" />    
    </resultMap>    
</resultMapCollection>原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/159314.html
 
 微信扫一扫
微信扫一扫  支付宝扫一扫
支付宝扫一扫 