当需要查询的数据一个表不能满足的时候,可以进行连表查询,将多个表的数据一起获取

一对一关联查询

案例:【用户表和购物车】

用户表

spring mybatisplus 连表_数据

 

 

购物车表

spring mybatisplus 连表_成员变量_02

 

 

用户Mybatis的工具自动生成代码

spring mybatisplus 连表_数据_03

 

 

需求:根据用户id返回一个用户对象【用户对象里面需要有的数据有用户自己的信息+该用户的购物车信息】

主表是用户表,从表是购物车表

修改主表的实体类,手动添加成员变量

在主表实体类中添加成员变量,变量的数据类型是从表

spring mybatisplus 连表_成员变量_04

 

 

在dao接口中新增方法

spring mybatisplus 连表_映射文件_05

 

 

映射文件方式一:多表一次查询

sql语句

spring mybatisplus 连表_映射文件_06

 

 

resultMap配置

spring mybatisplus 连表_数据_07

 

 

上面配置中体现了User类中有ShopCar成员变量的关系,单个对象用association,集合对象用colleciton。

association标签

      property:User类中ShopCar成员变量的变量名

      javaType:User类中ShopCar成员变量的数据类型

测试结果

spring mybatisplus 连表_映射文件_08

 

 

接收返回的User对象,里面即保存了用户表的数据,也保存了该用户对应的购物车的数据。

映射文件方式二:多表单独查询

第一条sql语句

spring mybatisplus 连表_数据_09

 

 

resultMap:

spring mybatisplus 连表_成员变量_10

 

 

第二条sql语句

spring mybatisplus 连表_映射文件_11

 

 

总体

spring mybatisplus 连表_数据_12

 

 

测试结果

成功

一对多关联查询

案例:【用户表和地址表】

spring mybatisplus 连表_数据_13

 

 

需求:根据用户id返回一个用户对象【用户对象中有用户表信息,还有地址表中所有的地址数据】

修改主表的实体类【主表是用户表】

spring mybatisplus 连表_成员变量_14

 

 

在dao接口中新增方法

spring mybatisplus 连表_映射文件_15

 

 

映射文件方式一:多表一次查询 (注意ofType)

spring mybatisplus 连表_映射文件_16

 

 

映射文件方式二:多表单独查询

spring mybatisplus 连表_成员变量_17

 

 

自连查询

使用的场景:

员工与管理者【只需要一张表:员工表】

一级菜单与二级菜单【只需要一张表:菜单表】

一级评论与二级评论【只需要一张表:评论表】

商品大类别与小类别:只需要一张表:类别表】

等等,这类需求都只需要一张表,在表中可以通过两个不同的列来进行关联,表达出父与子【包含与被包含】的关系。

 

案例:网站的动态菜单

建表

spring mybatisplus 连表_数据_18

 

 

生成代码

spring mybatisplus 连表_成员变量_19

 

 

实体类

spring mybatisplus 连表_数据_20

 

 

dao接口

spring mybatisplus 连表_数据_21

 

 

映射文件  (本质是通过主键和外键的关系)

spring mybatisplus 连表_成员变量_22

 

 

测试

成功

学习中,博客都是自己学习用的笔记,持续更新改正。。。