2 emperorname emperorname 于 2017.09.05 23:09 提问

关于mybatis多对多查询映射的大疑问

一个多对多的例子:

class Student{
        int id;
        List<Course> courses;
}
class Course{
    int id;
    List<Student> students;
}

我的数据库有student和course两个表。我查询时把student当作主表。当我用resultMap做映射时,我可以把student类中的course数组映射进去,course类的id属性也可以映射,但是course的student数组怎么映射呢?
小弟才学疏浅,希望大神不吝赐教:)

其实我是想经过查询映射之后,在student里能够得到course数组,在这个course数组里,又能得到student数组。

3个回答

chenbaige
chenbaige   Rxr 2017.09.06 08:58
已采纳

配置学生和课程的多对多关系:

        <collection property="courses" ofType="Course">
        <id property="id" column="c_id" />
                    //下面两个是课程表与数据库字段的对应关系
        <result property="name" column="c_name" />
        <result property="credit" column="c_credit" />
    </collection>
emperorname
emperorname 回复legendCoder: 不过谢谢你的回答:)
3 个月之前 回复
emperorname
emperorname 回复legendCoder: 我觉得可以让查询返回的值全部存在map里面,然后自己写代码去实现。我只是想知道mybatis框架能不能做到这一点。现在觉得貌似不能。。。。
3 个月之前 回复
chenbaige
chenbaige 回复emperorname: 那怎么可能,你只有分别在学生和课程的resultmap中配置这种多对多关系,在学生的dao中查询课程,在课程中查询学生数组信息。你这样就形成循环了,是不行的
3 个月之前 回复
emperorname
emperorname 我明白这个。但是这样配置的话,course类中的student数组没有赋值啊。我是想经过查询映射后,student和course两个对象能相互得到对方的引用。
3 个月之前 回复
congge_1993
congge_1993   2017.09.06 11:30
wgs1393044648
wgs1393044648   2017.09.06 22:58

设置外键不行么?俩个表都设一个外键存第三张表里,

Csdn user default icon
上传中...
上传图片
插入图片