MyBatis中的collection两种使用方法

表关系: 问题表 1==>n 问题选项表,
需求: 查询问题时候,联查出来问题选项

//问题 实体类
public class Question {
private String id; //ID
private String content; //问题
private String type; //问题类型 1:单选,2:多选,3:问答
private Integer sort; //排序
private List options; //问题选项 *** 问题表里不需要有这个属性对应的字段
//…
}

//问题选项 实体类
public class QuestionOption{
private String id; //ID
private String qid; //问题ID *** 问题选项表里需要有这个属性对应的字段
private String content; //选项
private Integer sort; //排序
//…
}

方式一:
代码复用性高, 主表分页查询正确
1
QuestionMapper.xml

<!-- 查询列表 -->
<select id="selectList" resultMap="BaseResultMap">
    SELECT
    	pq.id, pq.content, pq.type, pq.sort
    FROM
    	question AS pq
    <where>  
    </where>
</select>

QuestionOptionMapper.xml

SELECT pqo.id, pqo.content, pqo.sort FROM question_option AS pqo pqo.qid = #{qid}

方式二:
只需要执行一次sql查询, 主表分页查询不正确
1
QuestionMapper.xml

<!-- 查询列表 -->
<select id="selectList" resultMap="BaseResultMap">
    SELECT
    	pq.id, pq.content, pq.type, pq.sort
    	,pqo.id AS oid ,pqo.content AS ocontent ,pqo.sort AS osort <!-- 联查子表字段,起别名 -->
    FROM
    	question AS pq
    	LEFT JOIN question_option pqo ON pq.id = pqo.qid <!-- 联查子表 -->
    <where>  
    </where>
</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值