第三章

JPA多表查询
多表查询在Spring Data JPA中有两种实现方式,第一种是创建一个结果集的接口来接收多表联接查询后的结果,第二种是利用JPA的关联映射来实现
关系映射
在软件开发中,类与类之间最普遍的关系就是关联关系,而且关联是有方向的,以角色(Role)和用户(User)为例,一个角色下有多个用户,而下一个用户只能属于一个角色
从User到Role的关联就是多对一关联,这就意味着每个User对象只会引用一个Role对象,因此在User类中应该定义一个Role类型的属性,来引用所关联的Role对象
从Role到User是一对多关联,这意味着每个Role对象会引用一组User对象,因此在Role类中应该定义一个集合类型的属性,来引用所有关联的User对象
如果仅有User到Role的关联或者仅有从Role到User的关联,就称为单向关联,就称为单向关联,如果同时包含两种关联,就称为双向关联
他的优点:
(1)SQL被统一提取出来,便于统一管理和优化.
(2)SQL和代码解耦,将业务逻辑和数据服务逻辑分离,使系统的设计更清晰,更易维护.更易单元测试.
(3)提供映射标签,支持对象与数据库的ORM字段关系映射.
(4)提供对象关系映射标签,支持对象关系组件维护.
(5)灵活书写动态SQL,支持各种条件来动态生成不同的SQL
他的缺点:
(1)编写SQL语句是时工作量很大,尤其是字段多,关联表多时,更加如此.
(2)SQL语句依赖于数据库,导致数据库移植性很差.
Spring Boot集成MyBatis
MyBatis是一款标准的ORM框架,被广泛的应用于各企业开发中MyBatis最早是Apache的一个开源项目 IBatis,2010年这个项目由Apache Software Foundation迁移到了Google Code,并且改名为MyBatis,2013年11月有迁移到GitHub
MyBatis几个重要的概念:
Mapper配置:可以使用某干XMI的1专市由可以L使用基于Java 注解的MyBatis注解来实现,甚至可以直接使田MvRatis提做的API来实现。
Mapper接口:是指自行定义的一个粉坦燃ryus DAHT通堂所造的 DAO接口。早期
的Mapper接口需要自定义去实现,现在MNRRHi-1女白队Ma应2r培口创建动态代理对象。
Mapper接口的方法通常与Mapper配置文件中的-eltinsertudate.delete等 XML结
点存在——对应关系。
Executor:MyBatis中所有的Mapper语句的地行都是通过Executor进行的,Executor是
MyBatis的一个核心接口。
SqlSession:是MyBatis的关键对象,是执行持久化操作的独享,类似于JDBC中的Connection,SqlSession对象完全包含以数据库为背景的所有执行SQL 操作的方法,它的底层封装了JDBC连接,可以用 SqlSession实例来直接执行被映射的SQL 语句。
SqlSessionFactory:是 MyBatis的关键对象,它是单个数据库映射关系经过编译后的内存
镜像。SqlSessionFactory对象的实例可以通过 SqlSessionFactoryBuilder对象类获得,而
SqlSessionFactoryBuilder则可以从XML 配置文件或一个预先定制的Configuration的实例构建
出。
MyBatis的工作流程图如下
在这里插入图片描述

这里写图片描述
Spring Boot集成MyBatis
MyBatis-Spring-Boot-Starter
mybatis-spring-boot-starter是MyBatis帮助我们快速集成Spring Boot提供的一个组件包,使用这个组件可以做到以下几点:
构建独立的应用
几乎可以零配置
需要很少的XML配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值