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

1.本文章是无意中看见易百教程的Mybatis教程才注意到这个问题,平时都仅仅是在用CRUD,忽略了这方面的问题,真实十分羞愧

2.首先我们开始对mybatis的一对多的探究

0ed8f754f83d5dd837f867419bd4abfe.png

9414148.html

根据这个应用场景,我们需要获取在查询一个用户信息的时候还要去读取这个用户发布的帖子

现在我们来看一看用户级联文章在JavaBean中的编写方式,这就是一对多在JavaBean中的配置

0084c0421003511ec4fcbbb56953a324.png

现在我们再来看一看Mybatis的Mapper该如何编写一对多?很简单,就是在resultMap标签中配置标签,用来存储查询到的文章列表,注意posts代表的是用户实体的文章List集合

e277aede5acf8afa58c76f23519a90c9.png

9414148.html

这样Sql查询到的内容就映射到User用户实体中的属性中啦,这就是一对多的查询

3.现在我们再来探究一下Mybatis的多对一,现在有一个需求如下

26ec96ea63b3f6ace5d06145e1b7df8b.png

9414148.html

现在我们来看一看文章级联用户在JavaBean中的编写方式,这是多对一在JavaBean中的配置

1dea50b19e9a0ad289c6c823802b18b0.png

9414148.html

现在我们再来看一看Mybatis的Mapper该如何编写多对一?很简单,就是在resultMap标签中配置标签关联所属的用户实体

f18583636452c7608f689ffd8f6c4005.png

4.最后我们来探究一下Mybatis的多对多,在很多时候我们较好的运用多对多可以处理很多现实的逻辑问题,比如现在我们有下面这样一个需求

907f313ffb3b6e389c36d4946c1f8b4d.png

9414148.html

当前,一个用户可以拥有多个组,一个组也可以拥有多个用户,这样的关系就是多对多,为了解决这个问题,我们需要再用户和组之间建立一张关联的表,用于存储他们之间的对应关系,用户和组都通过这个关联的表,来查询他们之间的关系

8eb7b9d1d7e45279dc3c8e567998bd86.png

9414148.html

现在我我们先来看一看这个关联对象的JavaBean和其Mybatis的Mapper文件是怎么样的

首先是JavaBean

921ea2f4f2dfd0c801243f0e6e0f5229.png

9414148.html

再来看看这个实体对应的Mapper文件,只有两个功能

d134f7713f444ee34051dc2f962f7471.png

现在我们开始来看我们的主角Users用户和Group组这两位的JavaBean和Mapper文件时怎么写的

先看Users(用户实体)

eadbe2f5bca1263cfd680f73e0edf07c.png

9414148.html

Users的Mapper

fe1b8d6323ce343e6e3d35d6856fbf80.png

9414148.html

这样查询到的的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

ff06242b2116c22acf173ac94b615346.png

9414148.html

再看看看Group的Mapper

6f3a6df33aa2b5e793a24cc52cdf468d.png

9414148.html

这样再查询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}]}

5.各位看官注意哈,本文中并没有给出所有源码,而是仅仅看重点,当前本文中的所有示例都是在下根据易百教程的Mybatis教程https://www.yiibai.com/mybatis/中的案例所测试,在下就仅仅介绍点重点和个人见解了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值