MyBatis association解决多对一和collection解决一对多的映射关系

news2024/10/6 22:26:48

多对一的映射关系

创建Emp和Dept类

1.处理多对一映射关系方式一:级联属性赋值

2.处理多对一映射关系方式二:association实现

  • association:处理多对一的映射关系

  • property:需要处理多对的映射关系的属性名

  • javaType:该属性的类型

3.处理多对一映射关系方式三:分步查询

EmpMapper 接口中方法

  /**
     * 通过分步查询查询员工以及员工对应的部门信息
     * 分布查询第一步:查询员工信息
     */
    Emp getEmpAndDeptByStepOne(@Param("eid") Integer eid);

DeptMapper 接口中方法

 /**
     * 通过分步查询查询员工以及员工对应的部门信息
     * 分布查询第二步:通过did查询员工所对应的部门
     */
    Dept getEmpAndDeptByStepTwo(@Param("did") Integer did);

EmpMappe.xml

  • select:设置分步查询的SQL的sql的唯一标识(namespace.SQLId或mapper接口的全类名.方法名)

  • column:设置分布查询的条件

DeptMapper.xml

测试

分步查询的优点:可以实现延迟加载,但是必须在核心配置文件中设置全局配置信息:

lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载

aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载

此时就可以实现按需加载,获取的数据是什么,就只会执行相应的sql。

此时可通过association和collection中的fetchType属性设置当前的分步查询是否使用延迟加载,fetchType=“lazy(延迟加载)|eager(立即加载)”

fetchType:当开启了延迟加载后,可通过此属性手动控制延迟加载的效果

mybatis-config.xml 配置延迟加载

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>

测试,查询员工信息

当关闭mybatis-config.xml 配置延迟加载

 <!-- <setting name="lazyLoadingEnabled" value="true"/>-->

测试,查询员工信息,查询为员工信息以及员工所在部门

二、一对多映射关系

1.通过collection一对多映射关系

DeptMapper 接口中方法

  /**
     * 获取部门以及部门中所有的员工信息
     */
    Dept getDeptAndEmp(@Param("did") Integer did);

DeptMapper.xml

  • collection:处理一对多的映射关系

  • ofType:表示该属性所对应的集合中存储数据的类型

测试

2.通过分步查询处理一对多映射关系

DeptMapper 接口中方法

    /**
     * 通过分步查询部门以及部门中所有的员工信息
     * 分步查询第一步:查询部门信息
     */
    Dept getDeptAndByStepOne(@Param("did") Integer did);

DeptMapper.xml

EmpMapper 接口中方法

    /**
     * 通过分步查询部门以及部门中所有的员工信息
     * 分步查询第二步:根据部门id查询员工信息
     */
    List<Emp> getDeptAndEmpStepTwo(@Param("did") Integer did);

EmpMapper.xml

测试

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

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

相关文章

Metabase学习教程:视图-6

表格视图几乎可以来做所有的事情 了解如何设置条件格式、小条形图、值格式等。 表格是数据的自然栖息地&#xff0c;对应关系数据库列和对应的行记录。它们可能不像条形图或者地图&#xff0c;但当你在很多领域工作时&#xff0c;它们往往是你所需要的。Metabase中的表可视化…

运动品牌推荐:2022年最值得入手的一些运动装备

运动是一个比较枯燥的过程&#xff0c;不断的身体重复&#xff0c;会让运动者的注意力过度的关注到自己身体的疲惫感并且放大&#xff0c;这个时候我们就可以通过外在的运动装备来消除这些疲劳感&#xff0c;提高自己的运动积极性。不过哪些运动装备好用并适合自己呢&#xff1…

服务器配置怎么查看

服务器配置怎么查看 在我们找服务器商买服务器时&#xff0c;一般都是根据自己需求来选择需要什么配置的服务器。 选服务器时主要看CPU、内存、硬盘、带宽、这几个主要配置今天艾西就教你怎么查看服务器配置 CPU、内存怎么查看&#xff1a; 方法一&#xff1a;我们远程进入服…

学术Paper写作技巧要点讲解

在国外图书馆阅读他人的学术文章的时候&#xff0c;是否发现他们英文与你的不一样&#xff1f;虽然他们的Paper与你的有相似的结构&#xff0c;即开头、正文、结论&#xff0c;但是你的写作与他们的比起来还是显得简单多了。就是类似于国内毕业Paper的写作&#xff0c;在国外学…

断点续传小解

断点续传的原理 HTTP 协议是互联网上应用最广泛网络传输协议之一&#xff0c;它基于 TCP/IP 通信协议来传递数据。断点续传的奥秘就隐藏在这 HTTP 协议中了。 我们知道HTTP请求会有一个Request header 和 Response header&#xff0c;在请求头里边有个和Range相关的参数 当下…

6种交互式内容创意帮助跨境电商卖家提高独立站商店知名度

关键词&#xff1a;跨境电商卖家、独立站商店 交互式内容是一种允许用户与之交互的内容。一些示例包括在线投票、问答环节、交互式视频和交互式计算器等交互式工具。此内容类型允许查看者通过单击或拖动项目来自定义显示方式和内容。内容还可以引导读者采取您想要的操作&#x…

【网络安全】——sql注入之云锁bypass

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

嵌入式分享合集110

一、功耗&#xff0c;成为芯片设计的头号问题 很明显&#xff0c;热量将成为半导体未来的限制因素。已经有很大一部分芯片在任何时候都是黑暗的&#xff0c;因为如果所有东西同时运行&#xff0c;所产生的热量将超过芯片和封装消散该能量的能力。如果我们现在开始考虑堆叠模具…

智能网卡的网络加速技术

2021年9月25日&#xff0c;由“科创中国”未来网络专业科技服务团指导&#xff0c;江苏省未来网络创新研究院、网络通信与安全紫金山实验室联合主办、SDNLAB社区承办的2021中国智能网卡研讨会中&#xff0c;多家机构谈到了智能网卡的网络加速实现&#xff0c;我们对此进行整理&…

金枪鱼群优化算法(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

跑步需要哪些运动装备?跑步装备选购指南

跑步是一项有氧运动&#xff0c;是富有韵律性的运动,在运动过程中&#xff0c;血液可以供给心肌足够的氧气&#xff1b;氧气能充分酵解体内的糖分&#xff0c;还可消耗体内脂肪&#xff0c;增强和改善心肺功能&#xff0c;预防骨质疏松。 而在跑步的时候选择好自己的运动装备&…

代码随想录训练营第32天|LeetCode 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

参考 代码随想录 题目一&#xff1a;LeetCode 122.买卖股票的最佳时机II 按照自己的想法&#xff0c;无非就是在最低点买入&#xff0c;在最高点卖出&#xff0c;因此只需要找到成对的极小值和极大值&#xff0c;就可以计算利润了。代码实现如下&#xff1a; class Solutio…

使用姿势估计构建 姿势校正器

我们中的许多人大部分时间都在办公桌前弯腰驼背&#xff0c;身体前倾看着电脑屏幕&#xff0c;或者瘫坐在椅子上。如果你像我一样&#xff0c;只有当你的脖子或肩膀在数小时后受伤&#xff0c;或者你有偏头痛时&#xff0c;你才会想起你的不良姿势。如果有人可以提醒您坐直不是…

SpringBoot配置文件(学习笔记)

目录 一、配置文件概述 配置文件的作用 配置文件的格式 二、application.properties 配置文件 基本语法 读取配置文件 三、application.yml 配置文件 基本语法 读取yml中的配置 1、yml配置的简单读取 2、读取yml 配置中不同数据类型及 null​编辑 2、读取yml配置文…

Python基础知识入门(三)

Python基础知识入门&#xff08;一&#xff09; Python基础知识入门&#xff08;二&#xff09; 一、元组类型 元组是用英文小括号 () 把所有元素包裹起来&#xff0c;元组里面的每一个数据叫作元素。每个元素之间都要用 英文逗号 ( , ) 隔开。例如&#xff1a;(1,2,3)。 注意…

Head First设计模式(阅读笔记)-04.工厂模式

披萨订购 假设要完成披萨订购的功能&#xff0c;披萨的种类很多&#xff0c;比如 GreekPizz、CheesePizz 等&#xff0c;披萨店会根据用户需要的披萨种类制作披萨&#xff0c;制作的流程包括prepare->bake->cut->box 简单实现 下面代码的实现十分简单清晰&#xff0c;…

从0到0.1学习 lambda表达式(Java版)

编码几年时间&#xff0c;有一个东西似乎一直也逃不过去&#xff0c;那就是lambda表达式。 无论是c#&#xff0c;Python还是Java&#xff0c;lambda的思想都是共通的。但以下的语法和实例为java。 现在就来说说这个看似很难的lambda表达式 什么是lambda表达式&#xff1f; l…

【owt-server】m88分支和m59-server

OWT 单独有个webrtc的仓库,里面有m88的分支Merged Upgrade sdk to m88 for webrtc node #1026 提交记录 主干merge Merge pull request #1026 from starwarfan/mst-88webrtc-m88 目录 构建修改

【信管2.2】项目管理知识体系与组织结构

项目管理知识体系与组织结构上一次课中&#xff0c;我们已经学过了项目以及项目管理的概念&#xff0c;这些内容帮我们认识到了项目到底是个什么东西&#xff0c;有什么特点&#xff0c;和运营有什么区别等等。今天我们就继续沿着项目这件事说下去&#xff0c;我们将一起探讨一…

【知识网络分析】共引网络(co-citation)

共引网络(co-citation) 1 读取本地文献构建共引网络数据集2 网络数据集精简3 社团群体划分4 节点中心度相关指标计算1 读取本地文献构建共引网络数据集 RC.networkCoCitation()方法中的参数与RC.networkCitation()方法中的参数功能一致。该案例中使用的数据集同样为2020-202…