MyBatis 的关联关系配置 一对多,一对一,多对多 关系的映射处理

news2024/9/21 18:49:39

目录

一.关联关系配置的好处

 二. 导入数据库表:

 三.    一对多关系:--    一个订单对应多个订单项       

四.一对一关系:---一个订单项对应一个订单

五.多对多关系(两个一对多)


一.关联关系配置的好处

         MyBatis是一个Java持久化框架,可以通过XML或注解的方式将对象与数据库的关系进行映射。在MyBatis中,可以使用不同的方式配置关联关系,包括一对多、一对一和多对多关系。接上篇的MyBatis的教学

  1. 数据库表之间的关联关系:在关系型数据库中,不同表之间存在一对多、一对一、多对多等关联关系。通过在MyBatis中配置关联关系,可以方便地处理这些表之间的连接和查询操作,使数据的读取和写入更加简单和高效。

  2. 避免手动编写复杂SQL:使用MyBatis的关联关系配置,可以避免手动编写复杂的SQL语句来处理多个表之间的关联。通过简单的配置,MyBatis可以自动处理表之间的连接查询,简化了开发者的工作量。

  3. 对象关系映射:MyBatis是一个对象关系映射(ORM)框架,它可以将数据库中的表与Java对象之间进行映射。配置关联关系可以帮助开发者实现对象之间的关联,提供了更加面向对象的编程方式。

  4. 冗余数据减少:通过合理的关联关系配置,可以避免数据的冗余存储,减少数据库的存储空间占用。同时,在查询数据时,也可以通过关联关系一次性获取到所有相关的数据,提高查询效率。

总的来说,MyBatis的关联关系配置可以帮助开发者处理多表之间的关系,提供了更方便、高效和可维护的数据操作方式,减少了手动编写复杂SQL语句的工作量,同时也符合对象关系映射的思想。

 二. 导入数据库表:

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

 

 


 三.    一对多关系:--    一个订单对应多个订单项        

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

        我们先在orderMapper.xml中写一个根据ID查询订单的方法

          创建一个orderVo

package com.zking.vo;

import com.zking.model.Order;
import com.zking.model.OrderItem;

import java.util.ArrayList;
import java.util.List;

/**
 * @author yinzi
 * @create 2023-08-26 14:14
 */
public class OrderVo extends Order {
    private List<OrderItem> orderItems=new ArrayList<>();

    public List<OrderItem> getOrderItems() {
        return orderItems;
    }

    public void setOrderItems(List<OrderItem> orderItems) {
        this.orderItems = orderItems;
    }
}

      建一个resultMap的映射

         接着,写biz层

package com.zking.biz;

import com.zking.mapper.OrderMapper;
import com.zking.vo.OrderVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author yinzi
 * @create 2023-08-26 14:31
 */
@Service //交给spring管理
public class OrderBizImpl implements OrderBiz {
    @Autowired
    private OrderMapper om;

    @Override
    public OrderVo selectbyOid(Integer oid) {
        return om.selectbyOid(oid);
    }
}

        最后测试结果

 


四.一对一关系:---一个订单项对应一个订单

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

        一样,我先来配置一个查询的方法

         然后写biz层

package com.zking.biz;

import com.zking.mapper.OrderItemMapper;
import com.zking.model.OrderItem;
import com.zking.vo.OrderItemVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author yinzi
 * @create 2023-08-26 15:23
 */
@Service
public class OrderItemBizImpl implements OrderItemBiz {
    @Autowired
    private OrderItemMapper oim;


    @Override
    public OrderItemVo selectByOrderItemId(Integer oiid) {
        return oim.selectByOrderItemId(oiid);
    }
}

        最后测试:

 

五.多对多关系(两个一对多)

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

        老套路,先配置一个查询的方法

         然后接着写biz层

package com.zking.biz;

import com.zking.mapper.HBookMapper;
import com.zking.vo.HBookVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author yinzi
 * @create 2023-08-26 16:08
 */
@Service
public class HBookBizImpl implements HBookBiz {
    @Autowired
    private HBookMapper hm;

    @Override
    public HBookVo selectByBookId(Integer bid) {
        return hm.selectByBookId(bid);
    }
}

最后测试结果:

 今天的分享就到这啦!!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/932029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java——它要求用户输入一个整数(实际上是一个字符串),然后计算该整数的平方值,并将结果输出。

这是一个Java程序&#xff0c;它要求用户输入一个整数&#xff08;实际上是一个字符串&#xff09;&#xff0c;然后计算该整数的平方值&#xff0c;并将结果输出。程序的基本流程如下&#xff1a; 首先&#xff0c;声明并初始化变量data和result&#xff0c;它们的初始值都为…

咸鱼之王俱乐部网站开发

我的俱乐部 最新兑换码 *注意区分大小写&#xff0c;中间不能有空格&#xff01; APP666 HAPPY666 QQ888 QQXY888 vip666 VIP666 XY888 app666 bdvip666 douyin666 douyin777 douyin888 happy666 huhushengwei888 taptap666 周活动 宝箱周 宝箱说明 1.木质宝箱开启1个…

Netty入门学习和技术实践

Netty入门学习和技术实践 Netty1.Netty简介2.IO模型3.Netty框架介绍4. Netty实战项目学习5. Netty实际应用场景6.扩展 Netty 1.Netty简介 Netty是由JBOSS提供的一个java开源框架&#xff0c;现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具&…

nuxt.js框架使用swiper的5.4.5版本记录,创建广告位幻灯片

nuxt依赖 “nuxt”: “^2.15.8”, “swiper”: “^5.4.5”, “vue”: “^2.7.10”, “vue-awesome-swiper”: “^4.1.1”, 需要完成的效果是 参考地址&#xff1a;https://3.swiper.com.cn/demo/pcSlide/ nuxt代码&#xff1a; <template><div class"page&quo…

基于AI + Milvus Cloud拓展更多、更丰富的AI应用场景

项目后续:探索更多应用场景 欢迎大家基于本项目拓展更多、更丰富的应用场景,例如: 进一步延伸对比功能,例如将不同的单品归类到一起。同样,也可以上传更多图像到数据库中,丰富查询结果。 将本项目转变为时尚探测仪或者时尚推荐系统。例如,将明星图像替换成可购买的…

软件开发的201个原则 阅读笔记 第172-201个原则

目录 原则172 做项目总结 第8章 产品保证原则 原则173 产品保证并不是奢侈品 原则 174 尽早建立软件配置管理过程 原则175 使软件配置管理适应软件过程 原则176 组织SCM 独立于项目管理 原则 177 轮换人员到产品保证组织 给所有中间产品一个名称和版本 原则179 控制基准 原则…

五、多表查询-4.1子查询和分类

一、概念 SQL语句中嵌套select语句&#xff0c;成为嵌套查询&#xff0c;又称子查询。 子查询外部的语句 可以是 insert / update / delete / select 的任何一个。 二、子查询分类 1、根据子查询结果不同 标量子查询&#xff08;子查询结果为单个值&#xff09;、列子查询&a…

Xmind软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 XMind是一款非常流行的思维导图软件&#xff0c;可以帮助用户创建清晰、美观的思维导图&#xff0c;用于记录、整理思维和团队协作。以下是关于XMind软件的详细介绍。 1、XMind的历史和演变 XMind是由北京心图科技有限公司开发…

算法通过村第8关【青铜】| 二叉树的经典算法题

二叉树的双指针 1.相同的树 思路&#xff1a;递归的挨个比较是否相同 class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if((p null&&q!null) || (p ! null && q null) || (p!null&&q!null&&p.val ! q.val)){return f…

安全帽穿戴检测人脸闸机联动

安全帽穿戴检测人脸闸机联动系统实通过yolov8网络深度学习算法模型&#xff0c;安全帽穿戴检测人脸闸机联动系统现对进入工地施工区域人员是否穿戴安全帽进行精准监测和身份识别&#xff0c;只有在满足这两个条件的情况下&#xff0c;闸机才会打开&#xff0c;允许其进入工地施…

器件介绍TMP1826NGRR、TMP1826DGKR、TMP1827NGRR、TMP1075NDRLR数字温度传感器

一、TMP1826 具有 2Kb EEPROM 的 1-Wire、0.2C 精度温度传感器 器件介绍 TMP1826 是一款高精度、1-Wire 兼容的数字输出温度传感器&#xff0c;具有集成的 2Kb EEPROM 和 –55C 至150C 的宽工作温度范围。TMP1826 在 10C 至45C 的温度范围内提供 0.1C&#xff08;典型值&#…

如何搭建数字化招商加盟体系?如何推动企业招商加盟增速?

线索转化率低、客户数据不完整及合作过程中服务满意度低等情景是企业在进行招商加盟的过程中常常会遇到的问题。如何使用数字化招商加盟工具&#xff0c;在业务运营的过程中来提高企业成单率、提高企业线索价值&#xff0c;提高客户满意度&#xff1f; 开利网络数字化招商加盟系…

大语言模型之六- LLM之企业私有化部署

数据安全是每个公司不得不慎重对待的&#xff0c;为了提高生产力&#xff0c;降本增效又不得不接受新技术带来的工具&#xff0c;私有化部署对于公司还是非常有吸引力的。大语言模型这一工具结合公司的数据可以大大提高公司生产率。 私有化LLM需要处理的问题 企业内私有化LLM…

图论(基础)

知识&#xff1a; 顶点&#xff0c;边 | 权&#xff0c;度数 1.图的种类&#xff1a; 有向图 | 无向图 有环 | 无环 联通性 基础1&#xff1a;图的存储&#xff08;主要是邻接矩阵和邻接表&#xff09; 例一&#xff1a;B3643 图的存储 - 洛谷 | 计算机科学教育新生态 (…

STM32--SPI通信与W25Q64(1)

文章目录 前言SPI通信硬件电路移位过程 SPI时序起始与终止条件交换一个字节 W25Q64硬件电路框图 FLASH操作注意事项软件SPI读写W25Q64 前言 USART串口链接入口 I2C通信链接入口 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种高速的、全双工、同步的串…

免费图床配置:PicGo + Github + jsDelivr

免费图床配置&#xff1a;PicGo Github jsDelivr 前言PicGo Github配置过程jsdelivr加速踩坑注意事项参考资料 觉得文章有收获&#xff0c;欢迎关注公众号鼓励一下作者呀~ 在学习的过程中&#xff0c;也搜集了一些量化、技术的视频及书籍资源&#xff0c;欢迎大家关注公众号…

记一次ActiveMQ漏洞利用

ActiveMQ介绍&#xff1a; Apache ActiveMQ 是 Apache 软件基金会所研发的一套开源的消息中间件&#xff0c;它支持 Java 消息服务、集群、Spring Framework 等。随着中间件的启动&#xff0c;会打开两个端口&#xff0c;61616 是工作端口&#xff0c;消息在这个端口进行传递&…

Sketchup软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SketchUp是一款由Trimble公司开发的3D建模软件&#xff0c;广泛应用于建筑、室内设计、城市规划等领域。它以直观的用户界面和强大的功能而闻名&#xff0c;让用户能够轻松地创建和修改三维模型。 1、SketchUp的主要特点 用户…

BIO到NIO、多路复用器, 从理论到实践, 结合实际案例对比各自效率与特点(下)

文章目录 多路复用器简介多路复用器的两个阶段Java中的多路复用器封装测试代码压测结果总结 本篇文章是BIO到NIO、多路复用器, 从理论到实践, 结合实际案例对比各自效率与特点(上)的下一篇, 如果没有看的小伙伴, 可以先看下, 不然可能会不连贯. 多路复用器简介 多路复用器是对…

STM32 CAN 波特率计算分析

这里写目录标题 前言时钟分析时钟元到BIT 前言 CubeMX中配置CAN波特率的这个界面刚用的时候觉得非常难用&#xff0c;怎么都配置不到想要的波特率。接下来为大家做一下简单的分析。 时钟分析 STM32F4的CAN时钟来自APB1 在如下界面配置&#xff0c;最好配置为1个整一点的数。…