mybatis的一对多,多对一,以及多对对的配置和使用

1.现在我们来看一看"用户” 级联 “帖子”(解释:一个用户对应多个帖子)在JavaBean中的编写方式,这就是一对多在JavaBean中的配置
在这里插入图片描述
现在我们再来看一看Mybatis的Mapper该如何编写一对多?很简单,就是在resultMap标签中配置标签,用来存储查询到的文章列表,注意posts代表的是用户实体的文章List集合
小疑问: 我觉得这里的collection标签里的 colum没用,
在这里插入图片描述
在这里插入图片描述
可以参考链接如下:
https://www.cnblogs.com/kenhome/p/7764398.html在这里插入图片描述
这样Sql查询到的内容就映射到User用户实体中的属性中啦,这就是一对多的查询
2.现在我们再来探究一下Mybatis的多对一,现在有一个需求如下
现在我们来看一看文章级联用户在JavaBean中的编写方式,这是多对一在JavaBean中的配置
在这里插入图片描述
现在我们再来看一看Mybatis的Mapper该如何编写多对一?很简单,就是在resultMap标签中配置标签关联所属的用户实体
在这里插入图片描述
3.最后我们来探究一下Mybatis的多对多,在很多时候我们较好的运用多对多可以处理很多现实的逻辑问题,比如现在我们有下面这样一个需求
在这里插入图片描述
当前,一个用户可以拥有多个组,一个组也可以拥有多个用户,这样的关系就是多对多,为了解决这个问题,我们需要在用户和组之间建立一张关联的表,用于存储他们之间的对应关系,用户和组都通过这个关联的表,来查询他们之间的关系
在这里插入图片描述
现在我我们先来看一看这个关联对象的JavaBean和其Mybatis的Mapper文件是怎么样的
首先是JavaBean
在这里插入图片描述
再来看看这个实体对应的Mapper文件,只有两个功能
在这里插入图片描述
现在我们开始来看我们的主角Users用户和Group组这两位的JavaBean和Mapper文件时怎么写的
先看Users(用户实体)
在这里插入图片描述
Users的Mapper
在这里插入图片描述
这样查询到的的User对用户象就是这样的,把这个用户所对应的组都查了出来
Users{id=0, username=‘yiibai’, mobile=‘13838009988’, groups=[Group{groupId=1, groupName=‘Group-1’, users=null}, Group{groupId=2, groupName=‘Group-2’, users=null}]}
再来看看Group(组实体),其实就是和Users实体是一样的哈
还是看Group的JavaBean
在这里插入图片描述
再看看看Group的Mapper
解释: 下图中collectio后面的select查询语句id(应该是UserGroupMapper里面的select)不是下图下面的那个select,不要搞混了,本来下图定义的resultMap就是为了下图定义的select而服务的,所以不要把collectio后面的select和下图中的select搞混了
在这里插入图片描述
这样再查询Group的时候就会把这个组的所有成员都查询出来了
Group{groupId=0, groupName=‘Group-1’, users=[Users{id=1, username=‘yiibai’, mobile=‘13838009988’, groups=null}, Users{id=2, username=‘User-name-1’, mobile=‘13838009988’, groups=null}]}

猜你喜欢

转载自blog.csdn.net/qq_40241957/article/details/88383118