可能標題說的不是很明白,具體其實就是:
我需要查詢一個用戶,但是這個用戶擁有多張試卷,所以我將試卷這個對象,作為User對象的一個屬性,這個屬性為List類型。這樣我在SQL查詢時直接查詢user表返回user對象,此user對象包含一個屬性(List<Test>多張試卷)。
java實體類對應關系:
public class Test{ private Integer userID; // 主鍵ID private String username; // 姓名 private String idCard; // 身份證號 private Integer sex; //性別 private String mobilePhone; // 手機號 private List<Test> propertyList; //List屬性 }
ibatis對應XML文件查詢代碼:
<resultMap id="List_result" class="com.ceshi.user.domain.User"> <result property="userID" column="userID"/> <result property="idCard" column="idCard"/> <result property="username" column="username"/> <result property="mobilePhone" column="mobilePhone"/> <result property="propertyList" column="{userID=userID}" select="getpropertyList"/> </resultMap> <select id="getpropertyList" parameterClass="HashMap" resultClass="com.ceshi.user.domain.User"> SELECT userID ,paperName, GROUP_CONCAT(courseRecomm SEPARATOR ',') courseRecomm FROM test WHERE userID = #userID# GROUP BY userID,paperName </select> <select id="getList" parameterClass="com.ceshi.user.domain.User" resultMap="List_result"> SELECT a.userID, a.idCard, a.username, CASE a.sex WHEN '1' THEN '女' ELSE '男' END AS sexName, a.mobilePhone, FROM user a <dynamic prepend="WHERE"> <isNotNull prepend="AND" property="userID"> a.userID=#userID# </isNotNull> <isNotNull prepend="AND " property="username"> a.username like'%$username$%'</isNotNull> <isNotNull prepend="AND" property="idCard"> a.idCard=#idCard# </isNotNull> </dynamic> ORDER BY a.userID DESC </select>
簡單來張圖說明一下;
查問卷表拼接用戶結果是這樣的:同一個人對應多張試卷,查詢試卷表結果。
但是我只想查用戶表,也返回用戶對應的試卷,也就是這樣:
記錄一下,雖然簡單。