多表查询——多对多关联映射(嵌套结果方式)

一、问题描述

假设有学生表、课程表、选课关系表,根据学生的学号查询学生的选课情况。

学生表:

课程表:

选课关系表:

 

二、解决方法

首先,需要在Student类中添加List<lesson> lessonList对象属性:

接着,在Studentmapper.xml中新建ResultMap:

<resultMap id="LessonsByStuId" type="com.neusoft.entity.Student" >
    <id column="studentid" property="studentid" jdbcType="VARCHAR" />
    <result column="studentname" property="studentname" jdbcType="VARCHAR" />
    <result column="studentsex" property="studentsex" jdbcType="VARCHAR" />
    <result column="entertime" property="entertime" jdbcType="DATE" />
    <result column="pwd" property="pwd" jdbcType="VARCHAR" />
    <result column="dept" property="dept" jdbcType="VARCHAR" />
    <result column="class0" property="class0" jdbcType="VARCHAR" />
    <collection property="lessonList" ofType="com.neusoft.entity.Lesson">
      <id column="lessonid" property="lessonid" jdbcType="VARCHAR" />
      <result column="name" property="name" jdbcType="VARCHAR" />
      <result column="dept" property="dept" jdbcType="VARCHAR" />
      <result column="grade" property="grade" jdbcType="VARCHAR" />
      <result column="mark" property="mark" jdbcType="VARCHAR" />
      <result column="type" property="type" jdbcType="VARCHAR" />
    </collection>
 </resultMap>

 然后通过左连接查询即可完成查询:

<select id="selectLessonsById" resultMap="LessonsByStuId" parameterType="java.lang.String" >
    select *
    from student
    left join courseselect on student.studentid=courseselect.studentid
    left join lesson on courseselect.courseTeachid=lesson.lessonid
    where student.studentid = #{studentid,jdbcType=VARCHAR}
 </select>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值