一对一
一个问题有一个提问人,是一对一的关系,要根据提问人的id查找提问人的姓名
在问题实体类加上提问人的属性
private Student student;
mapper.xml
<mapper namespace="com.xqit.ydzhkt.answer.mapper.ListQuestionMapper">
<resultMap id="listQuestion" type="com.xqit.ydzhkt.entity.QuestionEntity">
<result property="questionTitle" column="question_title"/>
<result property="questionTime" column="question_time"/>
<result property="reply" column="reply"/>
<association property="student" javaType="com.xqit.ydzhkt.entity.Student">
<result property="xm" column="XM"/>
</association>
</resultMap>
<select id="listQuestion" resultMap="listQuestion">
select question_title ,question_time,reply,student.XM
from question
join student
on student_id=student.ID
</select>
</mapper>
一对多
查看回答,一个问题有多个回答,是一对多,根据问题查询所有的回答
在问题实体类加上回答集合字段
private List<AnswerEntity> listAnswerEntity;
按结果嵌套
<resultMap id="questionContent" type="com.xqit.ydzhkt.entity.QuestionEntity">
<id property="id" column="id"/>
<result property="studentId" column="student_id"/>
<result property="questionTime" column="question_time"/>
<result property="questionContent" column="question_content"/>
<result property="questionTitle" column="question_title"/>
<collection property="listAnswerEntity" ofType="com.xqit.ydzhkt.entity.AnswerEntity">
<result property="userId" column="user_id"/>
<result property="answerContent" column="answer_content"/>
<result property="answerTime" column="answer_time"/>
</collection>
</resultMap>
<select id="queryQuestionContent" resultMap="questionContent" parameterType="int">
select question_title,question_content,question_time,answer_content,answer_time
from question q
join answer a
on q.id = a.question_id
where q.id = #{id}
</select>
按查询嵌套
<mapper namespace="com.xqit.ydzhkt.answer.mapper.TestMapper">
<select id="listQuestionAnswer" resultMap="questionAnswer" parameterType="int">
select * from question where question.id =#{id}
</select>
<resultMap id="questionAnswer" type="com.xqit.ydzhkt.entity.QuestionEntity">
<!--column是一对多的外键 , 写的是一的主键的列名-->
<collection property="listAnswerEntity" javaType="arraylist"
ofType="com.xqit.ydzhkt.entity.AnswerEntity" column="id" select="listAnswer"/>
</resultMap>
<select id="listAnswer" resultType="com.xqit.ydzhkt.entity.AnswerEntity" >
select * from answer where question_id = #{id}
</select>
</mapper>
mapper返回值类型 都是 questionEntity (还有一种方法,因为回答要连接查询用户表在连接学生教师表查询用户姓名,所以可以分开查询,先查出问题,然后根据问题id查询所有的回答,在service把这个集合set到questionEntity中,这种方式写出来是一个问题,下面一列回答,上图中sql查询结果为问题+回答的集合)
QuestionEntity q = queryQuestionTitleMapper.queryQuestionContent(id);
//把所有的回答查出来
PageHelper.startPage(pageNum,pageSize);
List<AnswerEntity> listAnswerEntity = listAnswerMapper.listAnswer(id);
//ba 回答的集合传给问题实体
q.setListAnswerEntity(listAnswerEntity)
return q;