开发者学堂课程【MyBatis持久层框架入门:多对一的处理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/21/detail/447
多对一的处理
1. 数据库表的设计
学生对应老师是多对一的关系,一个老师对应多个学生。
建立外键关系
Student 表和 teacher表中的详细信息
2.实体类
Teacher.java
Student.java
编写映射文件
编写学生将老师查询出来
所以编写 student.mapper.xml 多对一共有两种处理方式以下为第一种:
A:结果嵌套处理
首先把所有数据通过数据库查询出来,将所查询到的数据对应到实体类中。
其中 association 表示为关联对象;property 意思为:关联对象在 Student 实体类中的属性
以下是完整输出结果相互关联的表。
最终测试文件:
B:查询嵌套处理
第二种方式更为简单一些,体现在数据库查询上,其他的不需要关注,只需要更加关注关联对象 association,给其配备 property、column、select 以及 JavaType,select 的是 teacher.mapper.xml 中的 getTeacher。
将核心应射文件关联到 teacher,这是一种最常用的写法,因为每一个实体类都要有对应的映射文件
在查找时可单独写 teacher.mapper.xml,也可以将所选内容写到student.mapper.xml 中,只是当前文件中更方便快捷,若出现形式过于多复杂等情况建议写成多个文件形式。
总结:首先在数据库中查询到学生信息,将未被处理到的 id 去找到一个结果起到映射作用,也就是 resultMap,他的类型为 student。idname 处理后多了一个 tid;其中的 tid 时关于 property 中的 teacher 这个类型。
在根据 tid 到另外一张表中去查询,调用这张表中的 select 去查询老师的信息。