关于多对多,中间表关联,怎么查的多一张表,把另一张表的信息关联出来,mybatis框架

关于多对多,中间表关联,怎么查的多一张表,把另一张表的信息关联出来,mybatis框架

问题描述:

比如老师表,学生表,老师学生表,多对多的关系,通过老师把他带的学生也一起1查出来

主表里边多写个可以关联别的表的属性 例如别的表的id 再在sql指令中 写个 left join on指令 来关联

不就是一个多表查询的SQL吗。 写个left join 不就好了

可以在resultMap中使用collection标签

select tea.name,stu.name
from teacher tea
join tea_stu ts on tea.id = ts.tea_id
join student stu on stu.id = ts.stu_id
where tea.xx=""xxx

直接差关系表就可以了 该老师的主键 下 有多少个学生id 再查学生 这就完了

以老师为主体的查询,在resultMap中使用collection聚集:
例子:http://blog.csdn.net/j903829182/article/details/73196699

直接查老师学生表,根据老师的id查到对应学生的id就ok了

分析需求,要查到指定老师的信息,顺带把她的所有学生查出来,例如下面的学生表和老师表
图片说明
图片说明
要查询李四老师的信息,及其所带的学生信息,可以编写sql语句如下
SELECT t.id tid, t.name tname,t.age tage,t.gender tgender,s.name sname,s.age sage,s.gender agender,s.number snumber FROM teacher t LEFT JOIN student s ON t.id=s.t_id WHERE t.id=2;
这是通过查询老师信息,左连接查询学生。
顺便说一下,如果需要用javaBean封装这些信息,只需在teacher的实体类中使用属性List students 即可

楼主的题目有偏差,分别说明:
如果是存在老师表和学生表,那么实现需求就需要建立第三张表,记录对多对多关系(从数据库三范式理论来说,这是经典而唯一的方式),然后三张表关联查询;
如果只有老师表和老师学生表,相当于多对多关系已经被老师学生表涵盖了(势必存在不必要冗余),那么这两张表关联查询即可。

查询出你要的数据,mybatis使用resultMap自己去封装你要数据

我的理解,这个问题不需要sql的拼接,也不需要复杂的中间层处理,直接进行商品表和商品标签的连接查询,例如查询结果如下:
goodid tagid
1 1
1 2
2 1
2 2
2 3
再加工整理为如下jason返回客户端即可:
{
"goodids": [
{
"gid": "1",
"tagids": [
{
"id": "1"
},
{
"id": "2"
}
]
},
{
"gid": "2",
"tagids": [
{
"id": "1"
},
{
"id": "2"
},
{
"id": "3"
}
]
}
]
}