mybatis复杂sql查询——多对一和一对多处理


mybatis复杂sql查询——多对一和一对多处理

sforeverd

于 2021-04-25 16:17:44 发布

180
收藏
分类专栏: mybatis 文章标签: sql mysql mybatis
版权

mybatis
专栏收录该内容
6 篇文章0 订阅
订阅专栏
以学生表(Student)和教师表(Teacher)为例:
其中tid为外键约束

多对一处理
按查询嵌套处理
(相当于sql中的子查询)
思路:
1.查询所有的学生信息
2.根据查询出来的学生信息中的tid,查找教师信息:子查询

/**
* 查询学生信息以及对应的老师信息
* @return
*/
public List getStudentInfo();


/**
* 获取学生表tid列名对应的教师信息
* @param id 每个学生对应的教师编号
* @return
*/
public Teacher getTeacher(int id);
1
2
3
4
5
6
7
8
9
10
11
12
13



select = "getTeacher"/>




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
按结果嵌套处理
(相当于sql中的联表查询)









1
2
3
4
5
6
7
8
9
10
11
12
13
一对多处理
教师的实体类为:

学生的实体类为:


按结果嵌套处理
/**
* 获取指定老师的及对应的所有学生信息
* @param id 教师编号
* @return
*/
public List getTeacherAndStudents(int id);
1
2
3
4
5
6








1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
按查询嵌套处理



select="getStudents" column="id"/>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
注意点:

1、关联-association(一对一和多对一)

2、集合-collection(一对多)

3、JavaType和ofType都是用来指定对象类型的

JavaType是用来指定pojo中属性的类型

ofType指定的是映射到list集合属性中pojo的类型。
————————————————
版权声明:本文为CSDN博主「sforeverd」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sundan614/article/details/116123037

相关