XML映射器-高级查询结果映射

01-高级查询结果映射

emp表

dept表

02-多表关联查询映射

多对一映射

项目中Emp类的数据

项目中dept类的数据

想要多表查询需要建个公共类里面写入两个表中的属性,如下面方法

type里要写用到的类型,由于继承Emp所有Emp里面的属性直接写,column是写数据库的别字,property是写字段就是对象里属性的名字,由于是多表查询类中只声明了一个Dept属性,所以可以用对象属性名.属性的方式获取

当前发现一点问题如果我们要返回多个对象的时候需要用到集合在接口中我们声明方法的时候需要用到集合但是集合里<>符号里应该写什么呢,有人会写下图type里面类名,由于下面的类名是继承Emp类的所以也有人写Emp,不管写那个都是调用的EmpDeptDIO的tostring方法,即使你再<>里面写的是String类型它也会调用EmpDeptDIO的tostring方法,博主亲身测试过

第二种方法用association里面的property要写多表连接的另一个表名,也就是对应pojo里面另一个表名,javaType是对应表的全类名

或者可以创建另一个表的xml方法然后再另一个xml里面进行引用

这种方法可以不用指定javaType

association还有一个作用是强制会把多对多的情况变成多对一的情况

像下面这种数据库有两个相同id的情况

查到的多对一会出现如下图数据

用association会查询出5条但是显示出3条把相同id的要不就是去掉了要不就是和一样id的数据覆盖了(但是用它的前提主表必须查询id必须得有id这个属性)

当主表和子表里属性有相同的时候,我们需要用as给另一个表里的id其别名然后再association里面用columnPrefix属性可以去掉指定类里属性的前缀字母使得主表和子表即使用此方法去掉后一样但是实际的值不是一样的,但是用上后此类中的所有属性都得加上这个前缀

一对多的映射

嵌套结果: 一对多

首先在数据库查询到的结果如下

如果我们要查询一对多的话需要再公共类中继承一写多为什么下面会写

在对应的xml文件中写入sql语句和resultMap,这里重点是第二个resultMap,第二个resultMap继承了第一个就不用写一对多里的一的属性了,但是在写多的时候我们在公共类里把多声明成了list集合所以我们需要用collection来实现用list集合来接受结果的多的数据

创建对应接口用list集合因为要返回多个数据

最后打印输出的结果发现一个dept里面含有多个emp数据实现了一对多,而我们在数据库软件中看到的数据是有很多条的也就是一个部门不只出现一次而是出现了很对次,而在java里实现了一个部门只出现一次加上对应多个员工

嵌套查询(异步查询): 一对多

首先声明一对多的一表id是QueryDeptAndEmp,resultMap里面property为公共类里的类名,column为多表中sql语句中的参数,select为多表查询语句的sql id全类名

多表里的sql语句根据部门id来查找

在接口中声明方法

最后的查询结果

注意嵌套结果的方法和嵌套分布的方法有区别在分页的时候有区别
我们根据部门编号查询的时候嵌套结果只能查询数据表中前五条数据而不是按照部门的前五个序号查询的,如下图所示就只有五条数据

但是我们用嵌套分布查询的时候能查到前五个部门下所有的员工有那些

延迟查询(只适用于嵌套分布)

在某一个类中设置延迟查询也就是懒加载在嵌套分布里面用fetchType设置懒加载

在公共类中并且删除蓝色框里的内容,也就是先删除一对多里的多表

在mybatis_config.xml里面配置setting lazyLoadTriggerMethods属性

在mybatis_config.xml里面配置setting lazyLoadingEnabled属性可以把全局都设置成懒加载

但是我们想要有的不是懒加载变成立即加载怎么办,在对应的xml文件中把fetchType设置成eager

在mybatis_config.xml里面配置setting aggressiveLazyLoading属性并且设置成true可以把全局都设置成了立即加载

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

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

相关文章

WSL中使用AMBER GPU串行版

前提是已经安装过wsl 1 在 WSL 2 中启用 NVIDIA CUDA 参考在 WSL 2 上启用 NVIDIA CUDA | Microsoft Learn 注意&#xff1a;勿在 WSL 中安装任何 Linux 显示驱动程序。Windows 显示驱动程序将同时安装本机 Windows 和 WSL 支持的常规驱动程序组件。 2 在WSL2中配置Cuda 不安…

SEO之页面优化(一-页面标题2)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客&#xff1a;阿幸SEO~探索搜索排名之道 &#xff08;接上一篇。。…

Fiddler抓包工具实战

文章目录 &#x1f7e2; Fiddler入门到精通&#x1f449;主要功能&#x1f449;使用场景 &#x1f7e2; 一、Fiddler抓包和F12抓包对比&#x1f7e2; 二、Fiddler的核心功能&#x1f7e2; 三、Fiddler的工作原理&#x1f7e2; 四、Fiddler功能配置使用&#x1f449;规则设置&am…

信息学奥赛报考指南

近年来&#xff0c;信息学奥林匹克竞赛&#xff08;NOI&#xff09;越来越受到家长和学生的重视。这项竞赛不仅能培养孩子的编程与算法思维&#xff0c;还为优秀的选手提供了进入国内顶尖大学的保送资格&#xff0c;并有机会参加国际级赛事。因此&#xff0c;许多家长都希望了解…

Microsoft Office LTSC 2024 离线安装ISO镜像

微软近日正式发布了 Microsoft Office 2024 LTSC&#xff08;长期服务版本&#xff09;&#xff0c;为那些不适用订阅模式的企业提供了最新的 Office 版本。LTSC 版本专为需要稳定、长期支持的用户设计&#xff0c;适合需要长期部署在特定硬件环境中的企业或组织。 ​从Office …

2024年【四川省安全员B证】新版试题及四川省安全员B证考试试卷

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 四川省安全员B证新版试题参考答案及四川省安全员B证考试试题解析是安全生产模拟考试一点通题库老师及四川省安全员B证操作证已考过的学员汇总&#xff0c;相对有效帮助四川省安全员B证考试试卷学员顺利通过考试。 1、…

9.18日常记录

一.信号和槽机制 信号和槽:是对象之间通信的一种机制 信号classA不关心有多少槽函数与之绑定&#xff0c;它只管触发信号&#xff0c;具体要触发哪些槽函数&#xff0c;是由Qt的信号和槽机制来实现的。这样的话就充分的体现了面向对象的解耦原则了&#xff0c;因为对于classA来…

CSS概览

概述 是什么 cascading style css 层叠样式表 由W3C制定的网页元素定义规则 为什么 美化 怎么办 设置样式 布局 css 引入 内部样式表 在head标签内部使用style标签 <html><head><style>.id{width: 400px;height: 400px;border: 1px solid black;ma…

Revit API:Element 的分类

前言 Revit的继承体系以Element作为作为最上层的元素&#xff0c;在这个体系里面&#xff0c;所有的构件都是从 Element 派生出来的。我们可以把这个派生的关系本身当作一个分类方式&#xff0c;但这种方式分的类别太多了&#xff0c;不一定可以记住。参考&#xff1a;Revit A…

【QML 基础】QML ——描述性脚本语言,用于用户界面的编写

文章目录 1. QML 定义 1. QML 定义 &#x1f427; QML全称为Qt Meta-Object Language&#xff0c;QML是一种描述性的脚本语言&#xff0c;文件格式以.qml结尾。支持javascript形式的编程控制。QML是Qt推出的Qt Quick技术当中的一部分&#xff0c;Qt Quick是 Qt5中用户界面的涵…

研1日记14

1.动态卷积&#xff1a;所得卷积核与输入相关&#xff0c;参考博文&#xff1a;动态卷积之CondConv和DynamicConv-CSDN博客 针对不同的频段&#xff0c;学习注意力权重&#xff0c; 深度学习中组卷积(Group convolution)、深度卷积(Depthwise Convolution)以及深度可分离卷积…

解密.bixi、.baxia勒索病毒:如何安全恢复被加密数据

导言 在数字化时代&#xff0c;数据安全已成为个人和企业面临的重大挑战之一。随着网络攻击手段的不断演进&#xff0c;勒索病毒的出现尤为引人关注。其中&#xff0c;.bixi、.baxia勒索病毒是一种新型的恶意软件&#xff0c;它通过加密用户的重要文件&#xff0c;迫使受害者支…

LinuxC高级作业1

1.已知网址www.hqyj.com截取出网址的每一个部分 2.整理思维导图 3.将配置桥接网络的过程整理成文档 i)) 保证虚拟机提供了桥接模式 菜单栏中 ----> 虚拟机 -----> 设置 -----> 网络适配器 ii) 保证虚拟机可以设置桥接网络 菜单栏中 ----> 编辑 -----> 虚拟网…

力扣674-最长连续递增序列(Java详细题解)

题目链接&#xff1a;674. 最长连续递增序列 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 dp五部曲。 1.确定dp数组和i下标的含义。 2.确定递推公式。 3.dp初始化。 4.确定dp的遍历顺序。 …

算法笔记/USACO Guide GOLD金组DP 3. Paths on Grids

今天学习背包DP&#xff08;Knapsack DP) 是USACO Guide的DP章节中第三点 What is grid DP? -Summary DP problems often involve a 2D grid where paths are analyzed. Movement is restricted to one direction on the x-axis and y-axis, typically starting from one c…

分页查询,pageHelper, pagehelper-spring-boot-starter

一、传统分页查询 要想从数据库中进行分页查询&#xff0c;我们要使用LIMIT关键字&#xff0c;格式为&#xff1a;limit 开始索引 每页显示的条数 查询第1页数据的SQL语句是&#xff1a; select * from emp limit 0,10;查询第2页数据的SQL语句是&#xff1a; select * from …

MySQL高阶1783-大满贯数量

题目 找出每一个球员赢得大满贯比赛的次数。结果不包含没有赢得比赛的球员的ID 。 结果集 无顺序要求 。 准备数据 Create table If Not Exists Players (player_id int, player_name varchar(20)); Create table If Not Exists Championships (year int, Wimbledon int, F…

Agile Modbus STM32裸机移植 从机使用

本教程手把手教你实现Agile Modbus&#xff0c;照抄就能成。 并且会解读函数功能含义。 1. 引言 Agile Modbus 是一个轻量级的 Modbus 协议栈&#xff0c;可以满足用户在任何场景下的需求。 功能 支持 rtu 和 tcp 协议&#xff0c;使用纯 C 语言开发&#xff0c;不涉及任何硬…

《微处理器系统原理与应用设计第十三讲》通用同/异步收发器USART轮询模式应用设计

USART提供两设备之间的串行双工通信&#xff0c;并支持中断和DMA工作。采用轮询、中断和DMA三种方式进行数据收发。 一、功能需求 实现远程串行通信数据的回传确认。微处理器系统构成的测控设备通过USART&#xff08;串口&#xff09;与用户设备&#xff08;上位机&#xff0…

OpenHarmony(鸿蒙南向开发)——标准系统方案之扬帆移植案例

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量系统STM32F407芯片移植案…