java mybatis 一对多(集合映射)

java mybatis 一对多(集合映射)

相对于关联来说,集合映射多了一个属性”ofType”,这个属性用来区分JavaBean(或字段)属性类型和集合包含的类型来说是很重要的,ofType用来表示集合包含类型。


下面来一个问题对应多个选项的实例来诠释映射:

问题对象实体类:

package com.hi.test.model;

import java.io.Serializable;
import java.util.List;

public class QuestionInfo implements Serializable {

    private static final long serialVersionUID = -5182773713250974139L;
    private String question_id;
    private String question_stem;
    private String question_problem;
    private String question_answer;
    private List<AnswerInfo> answerInfos;

    public String getQuestion_id() {
        return question_id;
    }

    public void setQuestion_id(String question_id) {
        this.question_id = question_id;
    }

    public String getQuestion_stem() {
        return question_stem;
    }

    public void setQuestion_stem(String question_stem) {
        this.question_stem = question_stem;
    }

    public String getQuestion_problem() {
        return question_problem;
    }

    public void setQuestion_problem(String question_problem) {
        this.question_problem = question_problem;
    }

    public String getQuestion_answer() {
        return question_answer;
    }

    public void setQuestion_answer(String question_answer) {
        this.question_answer = question_answer;
    }

    public List<AnswerInfo> getAnswerInfos() {
        return answerInfos;
    }

    public void setAnswerInfos(List<AnswerInfo> answerInfos) {
        this.answerInfos = answerInfos;
    }

}

选项实体类

package com.hi.test.model;

import java.io.Serializable;

public class AnswerInfo implements Serializable {

    private static final long serialVersionUID = 8332347120442700758L;
    private String answer_id;
    private String question_id;
    private String choose_type;
    private String choose_content;

    public String getAnswer_id() {
        return answer_id;
    }

    public void setAnswer_id(String answer_id) {
        this.answer_id = answer_id;
    }

    public String getQuestion_id() {
        return question_id;
    }

    public void setQuestion_id(String question_id) {
        this.question_id = question_id;
    }

    public String getChoose_type() {
        return choose_type;
    }

    public void setChoose_type(String choose_type) {
        this.choose_type = choose_type;
    }

    public String getChoose_content() {
        return choose_content;
    }

    public void setChoose_content(String choose_content) {
        this.choose_content = choose_content;
    }

}

question_answer.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
    "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.hi.test.dao.QuestionAnswerDao">

    <resultMap type="com.hi.test.model.QuestionInfo" id="questionInfo">
        <result column="question_id" property="question_id"/>
        <result column="question_stem" property="question_stem"/>
        <result column="question_problem" property="question_problem"/>
        <result column="question_answer" property="question_answer"/>
        <collection property="answerInfos" column="question_id" ofType="com.hi.test.model.AnswerInfo">
            <result column="answer_id" property="answer_id"/>
            <result column="question_id" property="question_id"/>
            <result column="choose_type" property="choose_type"/>
            <result column="choose_content" property="choose_content"/>
        </collection>
    </resultMap>

    <select id="queryQuestionInfo" resultMap="questionInfo">
        SELECT 
            q.question_id,
            q.question_stem,
            q.question_problem,
            q.question_answer,
            qa.answer_id,
            qa.choose_type,
            qa.choose_content
        FROM 
            question q 
        JOIN question_answer qa ON q.question_id = qa.question_id 
        WHERE
            q.question_id = #{question_id}
        ORDER BY q.question_id ASC
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值