vo 类:
@Data
public class QuestAnswerTitleVo implements Serializable {
private static final long serialVersionUID = 1L;
private String questTitleId;
private String examTitleId;
private String examTitle;
private String type;
private List<QuestAnswerItemVo> itemList;
}
@Data
public class QuestAnswerItemVo implements Serializable {
private static final long serialVersionUID = 1L;
private String itemId;
private String itemTitle;
/**
* 出现次数
*/
private Integer nums;
}
xml:
<resultMap id="itemMap" type="org.jeecg.modules.stu.quest.vo.QuestAnswerItemVo"></resultMap>
<resultMap id="titleMap" type="org.jeecg.modules.stu.quest.vo.QuestAnswerTitleVo">
<result property="questTitleId" column="title_id"></result>
<result property="examTitleId" column="exam_title_id"></result>
<result property="examTitle" column="exam_title"></result>
<result property="type" column="type"></result>
<collection property="itemList" column="{questTitleId=title_id,examTitleId=exam_title_id}" select="selItemList"></collection>
</resultMap>
<select id="selItemList" resultMap="itemMap">
select a.id item_id,case when b.nums is null then 0 else b.nums end nums,a.content item_title from xg_tk_items a
left join
(select item_id,count(0) nums from xg_quest_answer
where title_id =#{questTitleId} and exam_title_id = #{examTitleId}
group by title_id,item_id) b
on a.id=b.item_id
where a.title_id = #{examTitleId}
</select>
<select id="getExamTitleList" resultMap="titleMap">
select a.title_id, a.exam_title_id,b.title exam_title,b.type from xg_quest_exam_title a
left join xg_tk_title b
on a.exam_title_id = b.id
where a.title_id = #{titleId}
order by order_num
</select>
mapper:
List<QuestAnswerTitleVo> getExamTitleList(String titleId);
<collection property="itemList" column="{questTitleId=title_id,examTitleId=exam_title_id}" select="selItemList"></collection>
这个里面 questTitleId 和 examTitleId 相当于定义了两个变量,用 “titleMap” 查出的列为其赋值,向“selItemList” 中传参,vo类中不需要明确定义这两个属性。