MyBatis----多表简单操作

一对一表

这里,仅记录一个一对一表的查询操作

环境搭建

这里是一个一对一的关系,一个订单(order)对应一个用户(user)
先有两个表:
orders表:
在这里插入图片描述ordertime用于记录下单时间,这里设置的是bigint(Long)类型的,是因为这里设置的向数据库中存储的数据是1970年到下单时间的毫秒数,再从数据库中取出来的时候再转换为Date(时间)

这个表的索引:在这里插入图片描述
设置的和user01表的外键关系:
在这里插入图片描述

user01表:在这里插入图片描述
就是user01表的id设置为orders表的外键(orders的uid字段)

这里我们要通过MyBatis实现一个查询,即查orders表数据的时候可以同时根据其外键查找到user01表中的记录

首先:
两个表存储的实体
User:在这里插入图片描述只一些属性,然后其ger和set方法,这里他的属性是和表中的字段对应的,注意Date类型的包别导入错误了

order:
在这里插入图片描述只几个属性,然后get和set方法,这里和表不同的是,这里的应该对应uid外键的地方放的属性是User对象,order表示订单,订单中应该有用户信息,所以放User才符合现实

查询

然后:
Order的映射文件:
在这里插入图片描述下面的sql语句可以查询出order表中的数据和其外键对应的user数据,这里我们主要看的是如何将数据封装到order实体中
这里也可以这样配置:
在这里插入图片描述

然后:结果:在这里插入图片描述
时间转换方法在上一篇MyBatis----核心配置文件的深入

多对一或一对多

这里,还是上一个例子,不过有些地方需要改变。
首先,还是那两个实例,一个用户表,对应的是user实例,一个订单表,对应的是order实例。这里,我们从用户角度出发,一个用户可对应多个订单,一个订单只能属于一个用户

首先看我们的user实例
在这里插入图片描述
多一个order对象的集合,因为一个用户可能有多个订单


这里我们映射文件中的sql语句也需要变化一下在这里插入图片描述
下面是我们的sql语句在数据查询中的执行结果
在这里插入图片描述可以看到,"李"和"李0"有两个订单
然后:
在这里插入图片描述

多对多

多对多表主要是靠加入一个第三者表,来保存他们对应的关系,下面的两个表,我们用一个r_u来保存两个表的关系。
这里我们搞一个多对多的关系,一个用户,一个角色,一个用户可以有多种角色,一个角色可以由多个用户使用。用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用。
做一个例子:
多对多查询的需求:查询用户同时查询出该用户的所有角色。
在这里插入图片描述
这里是三个表的联系。r_u的rid和role的id联系起来,r_u的uid和user01的id联系起来

下面是三个表中的数据:在这里插入图片描述
然后,查询的实现:
首先是sql语句:在这里插入图片描述
看映射文件:在这里插入图片描述和一对多的配置方式有点像

然后,在user实体中,因为一个user可能有多个role,我们为user添加一个role的集合:在这里插入图片描述

然后测试:在这里插入图片描述成功。这里我们查询的仅仅是有角色的用户,没角色的没有查询

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值