任务2.3 关联映射_第1页
任务2.3 关联映射_第2页
任务2.3 关联映射_第3页
任务2.3 关联映射_第4页
任务2.3 关联映射_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务2.3关联映射了解表与表的三种映射关系;能够通过Java对象描述数据之间的关系;理解<association>、<collection>等元素的相关属性与嵌套方法;会使用<association>、<collection>等元素进行一对一、一对多、多对多关联查询操作。1本节任务

虽然MyBatis框架提供了自动映射机制,使得数据库表的字段可以与Java对象的属性自动映射,但在实际开发过程中,数据库表的字段名与Java对象的属性名之间往往存在差异。当两者不一致时,自动映射会失效。<resultMap>元素可以手动指定字段与属性的映射关系,确保查询结果被正确填充。

关联映射:表与表之间一般存在3种关系:一对一、一对多和多对多。如图2.3.1所示一对一:指一个数据库表中的一条记录最多可以和另一个数据库表中的一条记录相关;一对多:指一个数据库表中的一条记录在关联字段上可以对应另一个数据库表中的多条记录。多对多:指两个数据库表之间的多条记录可以互相对应。为实现多对多关联映射,通常需要借助第三个关联表来存储两个表之间的关联关系。

2知识支撑图2.3.1

表与表之间的关系

数据库表之间的关系实质上反映的是数据与数据之间的关系,因此除了数据库表,在Java中还可以通过对象描述数据之间的关系。图2.3.2所示为通过Java对象描述数据与数据之间的关系。

2知识支撑图2.3.2

通过Java对象描述数据与数据之间的关系一对一:在本类中定义与之关联的类的对象,并以此作为属性;一对多:一个A类对象对应多个B类对象;多对多:若有两个相互关联的类,则可以在任意一个类中定义多个对方类的对象。

一对一关系查询:<association>元素用于处理一对一关系查询,该元素是<resultMap>元素的子元素,提供了一系列用于维护数据表之间的关系的属性,具体如表2.3.1所示。

2知识支撑属性名称说明property用于指定映射到的实体类对象的属性,与表字段一一对应column用于指定表中对应的字段javaType用于指定映射到实体对象的属性的类型jdbcType用于指定数据表中对应字段的类型fetchType用于指定在关联查询时是否启用延迟加载,有lazy和eager两个属性值可供选择,默认值为lazyselect用于指定引入嵌套查询的子SQL语句autoMapping用于指定是否自动映射typeHandler用于指定一个类型处理器

表2.3.1<association>元素的常用属性说明

可以通过以下两种方式配置<association>元素。示例代码如下:嵌套查询方式:通过执行另外一条SQL映射语句来返回预期的复杂类型。嵌套结果查询方式:使用嵌套结果映射来处理重复的联合结果的子集。

2知识支撑1<associationproperty="sc_no"column="sc_no"javaType="com.bigdata.pojo.StudentCredit"2select="com.bigdata.dao.StudentCreditDao.findStudentCreditNoById"/>1<associationproperty="sc_no"javaType="com.bigdata.pojo.StudentCredit">2<idproperty="id"column="sc_no"/>3<resultproperty="sc_no"column="sc_no"/>4</association>【任务2-9】一人一档案。要求查询用户“花花”的档案信息。操作要点数据准备;

编写实体类;创建DAO接口并定义接口方法(抽象);

重写接口抽象方法并向数据库中插入数据;创建并编写MyBatis映射文件;

修改MyBatis核心配置文件;测试运行查看结果。具体操作见视频

实操2.9一对一关系映射

一对多关系查询:在MyBatis中,<collection>元素用于处理一对多关系查询,其大部分属性与<association>元素的相同,但包含一个特殊属性ofType。ofType属性与javaType属性对应,用于指定实体类对象中集合类属性所包含的元素的类型。可以将查询结果中的多条记录映射到一个Java对象的集合属性中,从而实现一对多关系的数据封装。可以通过以下两种方式配置该元素。嵌套查询方式:通过执行另外一条SQL映射语句来返回预期的复杂类型,示例代码如下。嵌套结果查询方式:使用嵌套结果映射来处理重复的联合结果的子集,示例代码如下。2知识支撑1<collectionproperty="ordersList"column="id"ofType="com.bigdata.pojo.Orders"2select="com.bigdata.dao.OrdersDao.selectOrders/>1<associationproperty="sc_no"column="sc_no"javaType="com.bigdata.pojo.StudentCredit"2select="com.bigdata.dao.StudentCreditDao.findStudentCreditNoById"/>【任务2-10】一个用户可以购买多个商品。要求查询uid为4的用户购买的所有商品的信息。(操作要点同上)具体操作见视频

实操2.10一对多关联映射

多对多关系查询:在MyBatis中,也使用<collection>元素进行多对多关系查询。【任务2-11】一个学生可以选修多门课程,一门课程可以被多个学生选修。查询选修了课程“高等数学”的学生。(操作要点同上)2知识支撑具体操作见视频

实操2.11多对多关联映射

我们重点学习了表与表的三种关联关系(一对一、一对多、多对多),以及如何用Java对象描述这些关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论