mybatis 一对多/多对多 查询为空

在学mybatis的一对多,多对多关联查询时,由于还没添加关联关系,外键为空,导致查询后返回结果为空。
这里模仿学生(student)与班级(classes)与选课(stu_cou)的关系,在查询一个学生时,把学生表(student)与班级表(classes)与选课表(stu_cou)三个表利用id连接起来,当选课表与当前学生没有联系时,查询为空
原本的select配置是:

    <select id="selectStudent" resultMap="studentMap">
        SELECT s.id as stu_id,s.name as stu_name,classes_id,
                c.id as c_id,c.name as c_name
        FROM student s,stu_cou sc ,classes c on 
        WHERE s.id=#{id}
            and s.id=sc.stu_id 
            and c.id=sc.cou_id
    </select>

解决方法:

    <select id="selectStudent" resultMap="studentMap">
        SELECT s.id as stu_id,s.name as stu_name,classes_id,
                c.id as c_id,c.name as c_name
        FROM student s left join stu_cou sc on s.id=sc.stu_id 
                left join classes c on c.id=sc.cou_id
        WHERE s.id=#{id}
    </select>

通过left join把各个表连接起来,这样没有的属性会自动设置为空,当选课表与当前学生没有联系时,也可以返回学生对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值