当前位置: 首页 > news >正文

Mybatis的关联关系配置一对一,一对多,多对多的映射关系

目录

关联关系映射

一对一关联:

一对多关联:

多对多关联:

导入数据库表

 一对多

一对一 

 多对多


关联关系映射

关联关系映射在Mybatis中主要通过三种方式实现:一对一关联和一对多关联及多对多关联

一对一关联:

在一对一关联中,两个表之间存在一对一的关系,例如学生表和身份证表,一个学生只有一个身份证,而一个身份证也只属于一个学生。在Mybatis中,可以通过在实体类中定义关联属性,然后在映射文件中使用<association>标签来定义关联关系。通过配置映射关系,可以查询到学生表和身份证表的数据,并将其映射到对应的实体类中。

一对多关联:

在一对多关联中,两个表之间存在一对多的关系,例如部门表和员工表,一个部门可以有多个员工,而一个员工只属于一个部门。在Mybatis中,可以通过在实体类中定义关联属性,然后在映射文件中使用<collection>标签来定义关联关系。通过配置映射关系,可以查询到部门表和员工表的数据,并将其映射到对应的实体类中。

多对多关联:

是指两个表之间存在多对多的关联关系,即一个表的一条记录可以对应另一个表的多条记录,反之亦然。在数据库中,多对多关系通常需要通过中间表来实现。

在Mybatis中,可以通过定义中间表来映射多对多关系。假设有两个表,学生表和课程表,一个学生可以选择多门课程,而一门课程也可以被多个学生选择。为了映射这种多对多关系,需要创建一个中间表,例如选课表,用来记录学生和课程的关联关系。
 

导入数据库表

在generatorConfig.xml文件中,配置多张表

 一对多

   使用嵌套查询(Nested Queries):在主对象的映射配置中使用<collection>标签来配置关联的多个子对象。可以通过select语句查询子对象,并通过resultMap将结果映射到主对象中。

创建一个 OrderVo

package com.xiaoxu.Vo;import com.xiaoxu.model.Order;
import com.xiaoxu.model.OrderItem;import java.util.ArrayList;
import java.util.List;/*** @author小徐* @site www.veryedu.cn* @company xu集团* @create 2023-08-26 14:21*/
public class OrderVo extends Order {private List<OrderItem> orderItems = new ArrayList<OrderItem>();public List<OrderItem> getOrderItems() {return orderItems;}public void setOrderItems(List<OrderItem> orderItems) {this.orderItems = orderItems;}
}

 建立一个resultMap映射

接着写biz层

package com.xiaoxu.impl;import com.xiaoxu.Vo.OrderVo;
import com.xiaoxu.biz.OrderBiz;
import com.xiaoxu.mapper.OrderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @author小徐* @site www.veryedu.cn* @company xu集团* @create 2023-08-26 14:34*/
@Service
public class OrderBizImpl implements OrderBiz {@Autowiredprivate OrderMapper orderMapper;@Overridepublic OrderVo selectByOid(Integer oid) {return orderMapper.selectByOid(oid);}
}

一对一 

使用嵌套查询(Nested Queries):在主对象的映射配置中使用<association>标签来配置关联的子对象。可以通过select语句查询子对象,并通过resultMap将结果映射到主对象中。

和之前一样,首先配置一个查询方法

 biz层

package com.xiaoxu.impl;import com.xiaoxu.Vo.OrderVo;
import com.xiaoxu.biz.OrderBiz;
import com.xiaoxu.mapper.OrderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @author小徐* @site www.veryedu.cn* @company xu集团* @create 2023-08-26 14:34*/
@Service
public class OrderBizImpl implements OrderBiz {@Autowiredprivate OrderMapper orderMapper;@Overridepublic OrderVo selectByOid(Integer oid) {return orderMapper.selectByOid(oid);}
}

 多对多

 使用嵌套查询(Nested Queries):在中间表的映射配置中使用<collection>标签来配置关联的多个子对象。可以通过select语句查询子对象,并通过resultMap将结果映射到中间表对象中。

还是一样先配置一个查询方法

biz层

package com.xiaoxu.impl;import com.xiaoxu.Vo.HbookVo;
import com.xiaoxu.biz.HBookBiz;
import com.xiaoxu.mapper.HBookMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @author小徐* @site www.veryedu.cn* @company xu集团* @create 2023-08-26 16:39*/
@Service
public class HBookBizImpl implements HBookBiz {@Autowiredprivate HBookMapper hBookMapper;@Overridepublic HbookVo selectByBookId(Integer bid) {return hBookMapper.selectByBookId(bid);}
}

http://www.lryc.cn/news/154417.html

相关文章:

  • 计算机竞赛 基于深度学习的中文情感分类 - 卷积神经网络 情感分类 情感分析 情感识别 评论情感分类
  • 时序预测 | MATLAB实现CNN-BiGRU卷积双向门控循环单元时间序列预测
  • [Rust GUI]0.10.0版本iced代码示例 - progress_bar
  • 使用vue-pdf出现的卡顿,空白,报错,浏览器崩溃解决办法
  • (笔记七)利用opencv进行形态学操作
  • Spring是什么?
  • 电梯SIP-IP五方对讲管理系统
  • leetcode283移动零
  • Docker 部署SpringBoot项目,使用外部配置文件启动项目
  • 电子半导体行业电能质量监测与治理系统解决方案 安科瑞 许敏
  • pdfh5在线预览pdf文件
  • Java智慧工地大数据中心源码
  • 关于人工智能的担忧
  • JVM之强软弱虚引用
  • Python编程练习与解答 练习98:一个数是素数吗
  • vue3+ts+uniapp实现小程序端input获取焦点计算上推页面距离
  • 【2023集创赛】加速科技杯二等奖作品:基于ATE的电源芯片测试设计与性能分析
  • Java入坑之Robot类
  • spring-secrity的Filter顺序+自定义过滤器
  • leetcode 371. 两整数之和
  • Medium: Where to Define Qualified users in A/B testing?
  • POJ 3662 Telephone Lines 二分,最小化第k大的数
  • 【mybatis-plus进阶】多租户场景中多数据源自定义来源dynamic-datasource实现
  • vue3 async await
  • CLion远程Linux开发环境搭建及找不到Linux头文件的解决方法
  • Python综合案例(基本地图使用)
  • maven的scope总结
  • Linux执行命令
  • Nginx 配置中root和alias的区别分析
  • AP51656 PWM和线性调光 LED车灯电源驱动IC 兼容替代PT4115 PT4205