Mybatis 級聯查詢 (一對多 )

後臺系統中 涉及到添加試卷 問題 答案的一個模塊的。我須要經過試卷 查詢出全部的試題,以及試題的答案。這個主要要使用到Mybatis的級聯查詢。java

經過試卷 查詢出與該試卷相關的試題(一對多),查詢出試題的答案及分數(一對多)。spring

SelfTestTitle 實體類,SelfTestQuestion實體類,SelfTestAnswer實體類。ide

package org.system.entity.self;


import java.util.List;

import org.core.entity.BaseEntity;

public class SelfTestTitle extends BaseEntity {
    private Integer id;
    private String name;
    private String desc;
    private String picUrl;
    private List<SelfTestQuestion> questionList;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
    public String getPicUrl() {
        return picUrl;
    }
    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }
    
    
    public List<SelfTestQuestion> getQuestionList() {
        return questionList;
    }
    public void setQuestionList(List<SelfTestQuestion> questionList) {
        this.questionList = questionList;
    }
    @Override
    public Integer getPage() {
        return super.getPage();
    }

    @Override
    public Integer getRows() {
        return super.getRows();
    }

}
View Code
package org.system.entity.self;

import java.util.List;

import javax.validation.constraints.NotNull;

import org.core.entity.BaseEntity;
import org.hibernate.validator.constraints.NotBlank;
import org.utils.spring.Groups;

public class SelfTestQuestion extends BaseEntity {
    private Integer id;

    
    @NotNull(message = "{selfTestTitle.id.notnull.valid}", groups = { Groups.Insert.class })
    private Integer titleId;

    @NotBlank(message = "{question.notblank.valid}", groups = { Groups.Insert.class })
    private String question;

    @NotNull(message = "{viewOrder.notnull.valid}", groups = { Groups.Insert.class })
    private Integer viewOrder;
 
    private List<SelfTestAnswer> answersList;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getTitleId() {
        return titleId;
    }

    public void setTitleId(Integer titleId) {
        this.titleId = titleId;
    }

    public String getQuestion() {
        return question;
    }

    public void setQuestion(String question) {
        this.question = question;
    }

    public Integer getViewOrder() {
        return viewOrder;
    }

    public void setViewOrder(Integer viewOrder) {
        this.viewOrder = viewOrder;
    }
    
    
    
    
    public List<SelfTestAnswer> getAnswersList() {
        return answersList;
    }

    public void setAnswersList(List<SelfTestAnswer> answersList) {
        this.answersList = answersList;
    }

    @Override
    public Integer getPage() {
        return super.getPage();
    }

    @Override
    public Integer getRows() {
        return super.getRows();
    }
}
View Code
package org.system.entity.self;


import org.core.entity.BaseEntity;

public class SelfTestAnswer extends BaseEntity {
    private Integer id;

    private Integer questionId;

    private String answer;

    private Integer score;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getQuestionId() {
        return questionId;
    }

    public void setQuestionId(Integer questionId) {
        this.questionId = questionId;
    }

    public String getAnswer() {
        return answer;
    }

    public void setAnswer(String answer) {
        this.answer = answer;
    }

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }
    @Override
    public Integer getPage() {
        return super.getPage();
    }

    @Override
    public Integer getRows() {
        return super.getRows();
    }
}
View Code
 1     <!-- 查詢試卷詳情 -->
 2       <select id="queryOne"  parameterType="org.system.entity.self.SelfTestTitle"  resultMap="getSelfTestQuestionMap">
 3         select id, name, `desc` de, pic_url picUrl
 4         from self_test_title
 5         where id = #{id}
 6       </select> 
 7        <!-- 定義結果集 試卷下的問題 -->
 8     <resultMap type="map" id="getSelfTestQuestionMap">
 9           <result property="id" column="id" />
10           <collection property="questionList" column="id" javaType="list" select="getSelfTestQuestions"/>
11     </resultMap>
12         
13    <!-- 查詢問題 -->
14   <select id="getSelfTestQuestions"  parameterType="org.system.entity.self.SelfTestTitle"  resultMap="getSelfTestAnswersMap">
15         select id, title_id titleId, question, view_order viewOrder
16         from self_test_question
17         where title_id = #{id}
18   </select>  
19   
20     <!-- 定義結果集  問題下的答案 -->
21       <resultMap type="map" id="getSelfTestAnswersMap">
22           <result property="id" column="id"/>
23           <collection property="answersList" column="id" javaType="list" select="getSelfTestAnswers"></collection>
24       </resultMap>
25    <!-- 查詢問題 -->
26     <select id="getSelfTestAnswers"  parameterType="org.system.entity.self.SelfTestAnswer"  resultType="map">
27         select id ,question_id questionId,answer ,score from  self_test_answer where question_id =#{id}
28     </select> 
 

property:屬性名稱
column:外鍵列
javaType:類型(能夠是本身的實體類)
select:關聯的查詢語句
collection:一對多的標籤
property:屬性名稱
column:外鍵列

this

查詢出來的結果url

 

如今主要是要讓他顯示出來了!spa

相關文章
相關標籤/搜索