可能标题说的不是很明白,具体其实就是:
我需要查询一个用户,但是这个用户拥有多张试卷,所以我将试卷这个对象,作为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>
简单来张图说明一下;
查问卷表拼接用户结果是这样的:同一个人对应多张试卷,查询试卷表结果。
但是我只想查用户表,也返回用户对应的试卷,也就是这样:
记录一下,虽然简单。
时间: 2024-10-06 23:26:31