表关系: 问题表 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>