一、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/zh-hant/n/159314.html