Java EE企业级框架技术及案例实战-Spring+Spring MVC+MyBatis(微课版) 课件 第四章 MyBatis关联映射_第1页
Java EE企业级框架技术及案例实战-Spring+Spring MVC+MyBatis(微课版) 课件 第四章 MyBatis关联映射_第2页
Java EE企业级框架技术及案例实战-Spring+Spring MVC+MyBatis(微课版) 课件 第四章 MyBatis关联映射_第3页
Java EE企业级框架技术及案例实战-Spring+Spring MVC+MyBatis(微课版) 课件 第四章 MyBatis关联映射_第4页
Java EE企业级框架技术及案例实战-Spring+Spring MVC+MyBatis(微课版) 课件 第四章 MyBatis关联映射_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3第四章MyBatis关联映射-掌握动态SQL主要元素的使用-理解关联关系的基本概念-掌握基于XML的一对一关联映射方式-掌握基于XML的一对多关联映射方式-掌握基于XML的多对多关联映射方式-掌握基于注解的一对一关联映射方式-掌握基于注解的一对多关联映射方式-掌握基于注解的多对多关联映射方式0102030405060708项目需求背景知识项目实现经典问题强化本章小结0102030405E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3项目需求01项目需求01项目经理老王:小王,之前我们已经学习了MyBatis的基础以及核心组件,这些都是运用Mybatis进行开发的基础。程序员小王:现在使用Mybatis完成一个单表的增删改查功能我已经掌握了,但是在实际的业务中,表与表之间的关联关系可不是只有单表这种简单情况,还有多表之间的关联查询以及一些复杂的sql查询,这些使用Mybatis可以实现么?项目经理老王:可以的,Mybatis可不是只能做单表的查询,它还可以使用动态SQL完成复杂的sql查询,比如比较查询、模糊查询、批量查询,以及可以实现多表之间的关联查询。现在客户要求系统能针对不同的用户可以操作的模块不同,需要实现一个权限管理功能。程序员小王:对于权限管理功能会涉及到用户、角色、资源几张表,我在学习Mybatis的关联映射之后就可以实现这个功能模块。功能描述01角色管理:权限列表页面展示了当前所有角色的列表,每个角色都有对应的描述和操作。用户可以进行增加、删除、修改等操作。为了方便用户同时操作多个角色,提供了全选和反选功能。功能描述01权限详情:展示某个角色所拥有的权限列表,一个角色可以拥有多个权限,例如ADMIN角色是管理员,它拥有角色管理、资源管理、用户管理、商品管理、日志管理等多个权限。功能描述01资源权限列表:该页面展示了所有资源权限列表,每个资源权限都对应着对某一特定资源的管理,例如用户管理权限就可以对用户进行管理。功能描述01资源权限详情页面可以查看某一资源所对应的所有角色及其权限,这些角色具有对该资源的管理能力。不同的角色所拥有的资源权限是不同的,比如开发人员可以对日志进行管理,而销售人员可以对商品进行管理。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3背景知识02知识导图02动态SQL02动态SQL是MyBatis的强大特性之一。如果使用过JDBC或其它类似的框架,应该能理解根据不同条件拼接SQL语句的麻烦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号等。关联关系02通过之前的学习,我们已经能够使用MyBatis以面向对象的方式对数据库进行操作,但这些操作只是针对单表。在实际的开发中,对数据库的操作常常会涉及多张表,这在面向对象中就会映射成对象与对象之间的三种关联关系。下面对这些关系进行具体说明:一对一关系:是指对于实体集A与实体集B,A中的每一个实体最多与B中一个实体有关系。反之,在实体集B中的每个实体最多与实体集A中的一个实体有关系。例如每个公民只能拥有一个身份证号,而每个身份证号只能属于一个公民。一对多关系:是指实体集A与实体集B中至少有N(N>0)个实体有关系,并且实体集B中每一个实体至多与实体集A中一个实体有关系。例如一个班级里可以有多名学生,而每名学生只能属于一个班级。多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。例如一名学生可以选修多门课程,一门课程也可以被多名学生选修。基于XML方式关联映射02基于XML方式一对一关联映射在MyBatis中可以使用<association>子元素来处理这种一对一关系。在<association>元素中,通常可以配置以下属性:•property:指定映射到的实体类对象属性,与表字段一一对应。•column:指定表中对应的字段。•javaType:指定映射到实体对象属性的类型。•select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询。•fetchType:指定在关联查询时是否启用延迟加载。fetchType属性有lazy和eager两个属性值,默认值为lazy(即默认关联映射延迟加载)。基于XML方式关联映射022.基于XML方式一对多关联映射与一对一的关联关系相比,实际应用更多的是一对多(或多对一)关系。例如一个用户可以有多个订单,同时多个订单归一个用户所有。那么使用MyBatis怎么处理这种一对多关联关系呢?我们可以使用<collection>元素。<collection>元素的大部分属性与<association>元素相同,在应用时通常使用select属性以配置接口名和方法的方式指向SQL,同时将结果返回给对应的POJO对象。此外,<collection>元素还包含一个特殊属性ofType,它与javaType属性对应,用于指定实体对象中集合类属性所包含的元素类型。基于XML方式关联映射023.基于XML方式多对多关联映射在实际的项目开发中,多对多的关联关系非常常见。以用户和角色为例,一个用户可以拥有多种角色,而一个角色也可以包含多个用户,因此用户和角色之间存在多对多的关联关系。如果需要查询用户的信息,同时也需要查询该用户拥有的所有角色,可以使用多对多查询的方式来实现。这样就能够方便地获取用户与其所拥有角色之间的关联信息。

基于注解方式关联映射02随着注解开发方式的普及,MyBatis也提供了注解开发的方式来替代Mapper映射文件的编写。基于注解实现增删改查操作02首先介绍一些基本的增删改查(CRUD)注解,然后进一步学习如何使用关联注解来实现多表操作的复杂映射。基于注解方式一对一关联映射02在前面学习了如何通过在XML映射文件中使用<resultMap>元素来实现复杂关系映射,然而随着注解开发的流行,我们也可以使用Mybatis提供的@Results、@Result、@One、@Many等注解来完成复杂关系的映射。基于注解方式一对多关联映射02使用注解的方式实现一对多的关联映射,即在查询一个用户时,同时查出该用户的所有订单。基于注解方式多对多关联映射02使用注解的方式实现多对多的关联映射,即查询用户同时查询出该用户的所有角色。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3项目实现03业务场景03业务场景描述:项目经理老王:小王,对于动态SQL和关联映射都学会了吧?程序员小王:是的,已经掌握的不错了,正在做CRM系统中的权限模块,完成权限模块的持久层功能。项目经理老王:Mybatis关联映射可以使用XML和注解两种方式,你打算用那种方式呢?程序员小王:对于权限模块来说,它的业务比较复杂,我想使用注解的方式来实现。项目经理老王:好的。从开发效率来说,注解编写更简单,效率更高。从可维护性来说,注解如果要修改,必须修改源码,会导致维护成本增加,而xml维护性更强。程序员小王:是的,在实现过程中如果有疑问再向您请教吧。项目经理老王:好的,那就抓紧时间开始工作吧。整体项目结构03项目具体包及其作用:IPermissionDao.java是Mapper层的接口文件,定义了对资源权限进行增删改查等操作的方法。

IRoleDao.java是Mapper层的接口文件,定义了对角色进行增删改查等操作的方法。

MyBatisTest.java位于test包下,用于测试IPermissionDao接口和IRoleDao接口中的方法是否正确。

perties是用于配置JDBC连接信息的配置文件,其中包含数据库驱动程序、连接URL、用户名和密码等信息。

sqlMapConfig.xml是MyBatis的核心配置文件,用于配置数据源、事务管理器和Mapper文件的位置等信息。数据库配置文件03编写数据库配置文件,在resources包下创建perties数据库配置文件。jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8jdbc.username=rootjdbc.password=rootMybatis核心配置03编写Mybatis配置,在resources包下创建Mybatis核心配置sqlMapConfig.xm文件。

<!--通过properties标签加载外部properties文件--><propertiesresource="perties"></properties><!--数据源环境--><environmentsdefault="developement"><environmentid="developement"><transactionManagertype="JDBC"></transactionManager><dataSourcetype="POOLED"><propertyname="driver"value="${jdbc.driver}"/><propertyname="url"value="${jdbc.url}"/><propertyname="username"value="${jdbc.username}"/><propertyname="password"value="${jdbc.password}"/></dataSource></environment></environments><!--加载映射关系--><mappers><!--指定接口所在的包--><packagename="com.lindaifeng.ssm.dao"></package></mappers>DAO接口03权限管理模块涉及到资源权限和角色两个dao层的操作,所以需要编写资源权限和角色两个dao接口。在com.lindaifeng.ssm.dao包下,创建IPermissionDao和IRoleDao接口。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3经

温馨提示

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

评论

0/150

提交评论