Mybatis【多表连接】
我们在学习Hibernate的时候,如果表涉及到两张的话,那么我们是在映射文件中使用..等标签将其的映射属性关联起来的…那么在我们Mybatis中又怎么做呢???
先来回顾一下我们SQL99的语法:
由于我们Mybatis中并没有像Hibernate这样全自动化的,因此我们是没有..等标签的,我们还是使用手写SQL语句来使我们的关联属性连接起来…
一对一
需求:
学生和身份证
这里写图片描述
设计表:
实体
映射文件
由于我们有两个实体,因此我们会有两个映射文件
Student映射文件
Card映射文件
DAO层
现在我想根据学生的编号查询学生的信息和身份证信息!
由于该查询着重是查询学生的信息,于是我们在学生的映射文件中写SQL语句
按照需求,我们写出来的SQL语句是这样子的。
我来看一下查询结果:
这里写图片描述
我们的实体与映射表中,Student实体是没有关联其他的字段的,仅仅是写出了该实体的自带的属性。
明显地,我们Student是不能封装返回的结果,因此我们需要将关联属性进行关联起来!
我们关联了以后,Student实体就能够封装返回的结果了
查询编号为1的学生信息【包括身份证编号】
这里写图片描述
一对多
需求:
一个班级有多个学生,查询java学科有哪些学生信息
这里写图片描述
设计数据库表
实体
映射文件SQL语句
DAO
这里写图片描述
多对多
需求:
学生和课程
这里写图片描述
数据库表
实体
映射文件
DAO
总结
对于Mybatis的多表连接就非常简单了,由于SQL语句全是由我们自己写,如果我们返回的数据类型在当前的实体中是不够封装的话,那么我们只要再关联对应的映射属性就行了!
领取专属 10元无门槛券
私享最新 技术干货