您的位置:首页 > 其它

iBATIS中1:N查询结果利用groupBy功能实现的简单配置

2010-07-21 17:12 766 查看
iBATIS中的groupBy功能配置与使用,虽然很早就使用了,但最近又刚好用到了,简单的记录下

适用情况:如一道题目有多个答案,一般会分为两张表,一张表存题目,一张表存答案,这时就会形成1:N的对应关系。通过iBATIS中的groupBy功能很方便的实现从查询到数据填充的功能

存题目的表为:EXAM_USER_QUESTIONS,存答案的表为:EXAM_USER_OPTIONS,左连接,语句如下:

select a.test_title, b.content from EXAM_USER_QUESTIONS a left join EXAM_USER_OPTIONS b on a.id = b.link_exam_id


查询到的结果如下:



我们最终的结果就是一个题目对应着多个选项。

先配置SqlMap.xml,有两个地方需要注意,先看配置吧

<select id="selectExamUserQuestionsList" resultMap="examUserQuestionsResult" parameterClass="examUserQuestions"
cacheModel="oneDayCache">
select a.test_title, b.content from EXAM_USER_QUESTIONS a left join EXAM_USER_OPTIONS b on a.id = b.link_exam_id
</select>


<resultMap id="examUserQuestionsResult" class="examUserQuestions" extends="examUserQuestionsResultForList"
groupBy="test_title">
<result property="examUserOptionsList" resultMap="EXAM_USER_OPTIONS.examUserOptionsResultForList" />
</resultMap>


然后在ExamUserQuestions类中增加个private List<ExamUserOptions> examUserOptionsList ,就这样就OK了

特别注意下groupBy="test_title"的值,如果在页面中需要显示的为test_title则此时应该为groupBy="test_title",这样,就会按照test_title的对应关系,将另张表的多条数据封装到List对象中去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: