第3章 MyBatis的关联映射-【千锋教育】Java EE(SSM框架)企业应用实战
2023-03-21
|
27页
|
104人阅读
|
0人下载
教辅
内容正文:
第3章 MyBatis的关联映射
表与表之间的关系
一对一
一对多
多对多
主键映射
表与表之间的关系
一对多
主键映射
一对一
多对多
3.1
3.2
3.3
3.4
3.5
目录
Contents
初心至善 匠心育人
3.1 表与表之间的关系
在学习MyBatis的关联映射前,首先要了解表与表之间的关系。表与表之间的关系主要包括一对一、一对多和多对多等,接下来本节将对这几种关系作详细讲解。
在一对一关系中,一方数据表中的一条记录最多可以和另一方数据表中的一条记录相关。例如,现实生活中学生与校园卡就属于一对一的关系,一个学生只能拥有一张校园卡,一张校园卡只能属于一个学生,如图所示。
在一对多关系中,主键数据表中的一条记录可以和另外一张数据表的多条记录相关,例如,现实生活中班级与学生的关系就属于一对多的关系,一个班级可以有很多学生,一个学生只能属于一个班级,如图所示。
初心至善 匠心育人
3.1 表与表之间的关系
在多对多关系中,两个数据表里的每条记录都可以和另一方数据表里任意数量的记录相关,例如,现实生活中学生与教师就属于多对多的关系,一名学生可以由多名教师授课,一名教师可以为多名学生授课,具体如图所示。
如果直接通过SQL语句维护数据表,在维护一对一的表关系时,通常采用在任意一方引入对方的主键作为外键的方式;在维护一对多的表关系时,通常采用在“多”方加入“一”方主键作为外键的方式;在维护多对多的表关系时,通常采用中间表的方式。
初心至善 匠心育人
3.1 表与表之间的关系
然而在企业项目开发中,程序通常是以操作POJO对象的形式来操作数据库的,为了满足程序需要,MyBatis提供了关系映射的功能,这使得开发人员能够以操作POJO对象的形式处理表关系。
MyBatis中支持一对一、一对多、多对多等多种映射方式,在实际应用中,MyBatis通过映射文件中的<resultMap>元素实现关联映射,接下来本章将展开具体讲解。
初心至善 匠心育人
在完成数据表设计之后,如果使用MyBatis处理一对一的表关系,需要在MyBatis的映射文件中添加<association>元素。
<association>元素是映射文件<resultMap>元素的子元素,其配置代码如下所示。
3.2 一对一
<association>元素提供了一系列属性用于维护数据表关系,具体如表所示。
初心至善 匠心育人
表中列举了<association>元素的属性,开发人员可根据需要酌情使用。
前文中已经讲过,在处理表关系时,学生与校园卡是一对一的关联关系,接下来,本节将以此为例演示MyBatis实现一对一的关联映射。
3. 数据准备
(1)在MySQL中创建数据库chapter03,在数据库chapter03中创建数据表stu_card、数据表stu,其中,数据表stu_card用于映射校园卡信息,数据表stu 用于映射学生信息,SQL语句如下所示。
3.2 一对一
初心至善 匠心育人
(2)向数据表stu_card中插入数据,SQL语句如下所示。
3.2 一对一
(3)向数据表stu中插入数据,SQL语句如下所示。
(4)通过SQL语句测试数据是否插入成功,执行结果如下所示。
初心至善 匠心育人
从以上执行结果可以看出,数据插入成功。
4. 创建工程
在Eclipse中新建Web工程chapter03,将MyBatis的驱动jar包(mybatis-3.4.6.jar和lib目录下的jar包)复制到lib目录下,完成jar包的导入。
5. 创建POJO类
在工程chapter03的src目录下创建com.qfedu.pojo包,在com.qfedu.pojo包下分别创建两个POJO类:Stu和StuCard,如书中例3-1和例3-2所示。
6. 创建映射文件
在工程chapter03的src目录下分别创建com.qfedu.mapper包,在com.qfedu.mappr包下创建两个映射文件:StuCardMapper.xml和StuMapper.xml,如书中例3-3和例3-4所示。
3.2 一对一
初心至善 匠心育人
7. 创建配置文件
在工程chapter03的src目录下创建配置文件mybatis-config.xml,如书中例3-5所示。
8. 编写测试类
在工程chapter03的src目录下创建com.qfedu.test包,在com.qfedu.test包下创建测试类TestOneToOne,如例书中3-6所示。
3.2 一对一
初心至善 匠心育人
相比于一对一,一对多的表关系在开发中更为常见,处理过程也略微复杂。通常情况下,如果使用MyBatis处理一对多的关系,需要在MyBatis的映射文件中添加<collection>元
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。