JPA多表查询
多表查询在Spring Data JPA 中有两种实现方式,第一种是创建一个结果集的接口来接受多表联查查询后的结果,第二种是利用JPA的关联映射来实现.
关联映射
在软件开发中,类与类之间最普遍的关系就是关联关系,而且关联是有方向的.以角色(Role)和用户(User)为例,一个角色下有多个用户,而一个用户只能属于一个角色.
从User到Role的关联就是多对一关联,这就意味着每个User对象只会引用一个Role对象,
因此在User类中应该定义一个Role类型的属性,类引用所关联的Role对象.
从Role到User是一对多关联,或者仅有从Role到User的关联,就称为单向关联.如果同时包含两种关联,就称为双向关联.
数据之间一对多或者多对一的关系,通常涉及两张表,"多"方表通过外键引用"一"方表的主键来实现一对多的关联.
Spring Boot 集成MyBatis
回顾MyBatis
- Mybatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。
- Mybatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。
- Mybatis 只使用简单的XML和注解来配置和映射基本数据类型、Map接口和POJO到数据库记录。
他的优点:
//SQL被统一提取出来,便于统一管理和优化.
//SQL和代码解耦,将业务逻辑和数据服务逻辑分离,使系统的设计更清晰,更易维护.更易单元测试.
//提供映射标签,支持对象与数据库的ORM字段关系映射.
//提供对象关系映射标签,支持对象关系组件维护.
//灵活书写动态SQL,支持各种条件来动态生成不同的SQL
他的缺点:
//编写SQL语句是时工作量很大,尤其是字段多,关联表多时,更加