java springboot整合MyBatis联合查询
前面文章 java springboot整合MyBatis做数据库查询操作写了springboot整合MyBatis的方法 并演示了基础查询的语法 根据id查
那么 我们这次来演示联合查询
我们staff 表 内容如下
每条数据 对应的都有一个departmentid 这是 department部门表的外键id
department表内容如下
如果你连主外键都还未掌握的话 建议先去用 MySql实现了 联合查询 再来用开发语言实现
然后 我们将 staff 代码修改如下
package com.example.textm.domain;public class staff {private int id;private String name;private int age;private int status;private int departmentid;private String departmentName;@Overridepublic String toString(){return "staff{"+"id"+id+"namne"+name+"age"+age+"status"+status+"departmentid"+departmentid+(departmentName != null?"departmentName"+departmentName:"")+"}";}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getStatus() {return status;}public void setStatus(int status) {this.status = status;}public int getDepartmentid() {return departmentid;}public void setDepartmentid(int departmentid) {this.departmentid = departmentid;}public void setDepartmentName(String departmentName) {this.departmentName = departmentName;}public String getDepartmentName() {return departmentName;}
}
新加了一个departmentName是用来存 部门名称的 我们用MyBatis查询 直接挂我们需要的字段就好了 没必要整个对象都带进来
然后 我们在staffDao添加一个函数
Select("select s.*, d.name as departmentName from staff s inner join department d on s.departmentid=d.id;")
List<staff> getAllStaffWithDepartment();
我们 sql中已经写明 将 department代理为 d 然后 将d中的 name转为departmentName
这就是我说的 思路 如果你还有个age 继续往后加就好了
@Select("SELECT s.*, d.name AS departmentName, d.age AS departmentAge FROM staff s INNER JOIN department d ON s.departmentid=d.id;")
List<staff> getAllStaffWithDepartment();
然后 我们通过测试类 来调用getAllStaffWithDepartment
编写代码如下
System.out.println(staffDao.getAllStaffWithDepartment());
运行结果如下
我们的人员也都被带出了 部门信息
然后 在 domain目录下创建一个 department
这就是 department 表对应的属性类
参考代码如下
package com.example.textm.domain;import java.util.List;public class department {private int id;private String name;private List<staff> staffList;@Overridepublic String toString(){return "department{"+"id="+id+"name="+name+(staffList != null?staffList:"暂无员工")+"}";}public void setId(int id) {this.id = id;}public int getId() {return id;}public void setName(String name) {this.name = name;}public String getName() {return name;}public void setStaffList(List<staff> staffList) {this.staffList = staffList;}public List<staff> getStaffList() {return staffList;}
}
对加了一个 staffList 用来存 部门下的员工 类型当然就是一个staff员工类的list集合
然后 在dao下创建一个接口 叫 departmentDom
用来写 department这边的sql
然后 我们编写代码
package com.example.textm.dao;import com.example.textm.domain.department;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface departmentDom {@Select("SELECT d.id as deptId, d.name as deptName FROM department d")@Results(id = "departmentMap", value = {@Result(property = "id", column = "deptId"),@Result(property = "name", column = "deptName"),@Result(property = "staffList", column = "deptId", javaType = List.class,many = @Many(select = "com.example.textm.dao.staffDao.getStaffByDepartmentId"))})List<department> getAllDepartmentsWithStaff();
}
我们方法中的 sql是根据部门表 department 去查 顺便带出员工表外键对应的信息 我指定 id和name用自己的 staffList 通过staffDao接口的 getStaffByDepartmentId函数去获取
所以 我们staffDao接口还要再加一个函数 通过 部门id 查询 staff员工表 然后反应 staff员工类的list集合给他的函数
@Select("SELECT * FROM staff WHERE departmentid = #{departmentId}")
List<staff> getStaffByDepartmentId(int departmentId);
然后 在测试类中调用 departmentDom 的getAllDepartmentsWithStaff
首先 我们要写
@Autowired
private departmentDom departmentDom;
装配一下我们刚刚写的 departmentDom
然后调用
System.out.println(departmentDom.getAllDepartmentsWithStaff())
运行结果如下
我们部门下 也都带出了对应的员工信息
相关文章:
java springboot整合MyBatis联合查询
前面文章 java springboot整合MyBatis做数据库查询操作写了springboot整合MyBatis的方法 并演示了基础查询的语法 根据id查 那么 我们这次来演示联合查询 我们staff 表 内容如下 每条数据 对应的都有一个departmentid 这是 department部门表的外键id department表内容如下 如…...
windows2022证书配置.docx
Windows证书的配置 要求两台主机,一台作为域,一台进入域 按要求来选择角色服务 确认之后安装 安装完以后配置证书服务 选择服务 按要求配置 注:此处不用域用户登陆无法使用企业CA 按要求来 创建新的私钥 这几处检查无误后默认即可 有效期…...
HCIP网络笔记分享——IA回顾及OSPF协议
第一部分 HCIA回顾1、网络基础2、动态路由协议3、路由认证4、路由控制(AD metric ) 一、知识巩固二、场景模拟1、获取IP地址1.1 DHCP --- 动态主机配置协议1.1.1 DHCP客户端1.1.2 DHCP服务器1.1.3 DHCP客户端1.1.4 DHCP服务器 2、打开浏览器3、路由器进行…...
网络:IP地址、子网掩码、网络地址、广播地址、网段、网关
目录 一、IP地址 二、子网掩码 三、网络地址 四、广播地址 五、网段 六、网关 七、IP地址、子网掩码、网络地址、广指地址、网殷、网关的关系 参考链接 一、IP地址 IP地址是因特网协议(IP)中使用的一种数字标识符,用于唯一地标识网络…...
编程的未来 - 还有未来么?
缘起 唐门教主上个月某天深夜写了一篇博客 --《编程的未来》,要我谈谈感想。 这也是最近软件工程师们聊得比较多的问题,上周,在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候,大家也稍微谈了一下这个话题,但是谈…...
从零开始搭建群众权益平台(二)
这篇文章我们要建立的群众权益维护平台需要提供用户注册、登录、提交和查看问题或建议的功能,并且支持电话短信登录。在这个过程中,我们需要存储用户的登录信息。 我们将使用Node.js和Express.js作为后端框架,MongoDB作为数据库,并且使用Twilio服务发送短信验证码来实现手…...
Mysql之数据备份
一.日志 1.MySQL 的日志默认保存位置为 /usr/local/mysql/data2.修改日志配置文件 vim /etc/my.cnf [mysqld] ##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启 log-error/usr/local/mysql/data/mysql_error.log #指定日志的…...
【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例
数据库故障&分析: SQL server数据库数据无法读取。 经过初检,发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0,无法找到文件开头,数据表结构损坏。镜像文件的前面几十M空间和中间一部分空间被覆盖掉…...
C语言/C++ 之 打飞机游戏
【项目简介】 1、设计思想:本项目主要是为了实现打飞机游戏,主要包括5个函数模块,和1个主函数框架。分别是chu_shi_hua();、you_cao_zuo;、wu_cao_zuo();、show();、main();等。项目完成过程中主要运用了C/C中的输入输…...
在 Docker 中部署 Mino 并挂载配置文件
创建本地目录 首先,在主机上创建一个目录,用于存放 Mino 的配置文件。例如,创建一个名为 mino 的目录,用于存放 Mino 的配置文件。 mkdir mino拉取 Mino 镜像 使用以下命令从 Docker Hub 上拉取 Mino 的最新镜像: …...
无限脉动:释放音乐和区块链在音乐领域的力量
音乐是一种永恒的通用语言,它将人们聚集在一起,超越了边界,在我们灵魂深处产生共鸣,创造联系。在当今数字时代,随着区块链技术和去中心化网络的出现,音乐世界正在经历一场深刻的变革。 我们在与艺术家合作&…...
读发布!设计与部署稳定的分布式系统(第2版)笔记09_一窝蜂和容量
1. 停电事故后电力恢复的方式 1.1. 停电后常见的情形是,送电几秒钟后又再次断电 1.2. 数百万台空调和冰箱的用电需求,使刚刚恢复的电力供应发生过载 1.3. 当电力供应不足时,增加的电流很快就到达满负荷,导致过载,触…...
详解java定时任务
在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面LZ就其原理、实例以及Timer缺陷三个方面来解析java Timer定时器。 一、简介 在java中一个完整定时任务需要由Timer、TimerTask两个…...
PCIe卡设计方案:单路12Gsps 3G 带宽模拟信号源PCIe卡
一、板卡概述 单路3G带宽模拟信号源卡由DA子卡和PCIe底板组成,二者通过标准FMC连接器互联,可以实现将PCIe总线数据转换为一路高速的模拟量输出。北京太速科技板可广泛用于雷达、通信、光电领域的噪声信号、毛刺、脉冲信号模拟产生等领域。 二、 …...
第1章 计算机网络和因特网
1、主机或端系统通过( )接入因特网。 A. ISPB. 调制解调器C. 交换机D. 路由器 P21:端系统(PC、智能手机、Web 服务器、电子邮件服务器等)经过一个接入 ISP 与因特网相连。 2、主机一般被划分为两类:客…...
QT入门基础知识
什么是QT QT是一个跨平台的C图像用户界面应用程序框架QT在1991年由奇趣科技开发QT的优点 跨平台,几乎支持所有平台接口简单,容易上手一定程度上简化了内存回收机制有很好的社区氛围可以进行嵌入式开发 QWidget QT注意事项 命名规范 类名 首字母大写,单…...
Leetcode---350周赛
题目列表 6901. 总行驶距离 6890. 找出分区值 6893. 特别的排列 6447. 给墙壁刷油漆 一、总行驶距离 很显然,这题单纯就是一道数学应用题,我们要明白最关键的一点 :只有当mainTank>5并且additionalTank>0时,才能发生副油…...
Django通过Nginx和uWSGI实现负载均衡
Django是一款非常流行的Web应用程序框架,它允许开发人员以快速、简单和灵活的方式构建可扩展和可维护的Web应用程序。当你的应用程序开始变得越来越受欢迎时,你可能会发现需要使用负载均衡来确保应用程序的可用性和性能。在本文中,我们将介绍…...
单元测试框架——Junit5
文章目录 Junit1. 注解2.断言3.测试用例执行顺序4.测试套件Suite1) 指定多个类2) 指定包 5. 参数化1) 单参数2) 多参数3) 文件注入 6.动态参数 Junit Junit是一个开源的用于Java语言的单元测试框架,也是Java方向使用最广泛的单元测试框架。 在pom.xml中引入Junit5…...
centos 系列添加 yum 源
nginx 首先,安装 EPEL (Extra Packages for Enterprise Linux) 仓库。这是一个由 Fedora 项目提供的免费扩展软件包仓库,其中包含许多有用的软件包。 sudo yum install epel-release 接下来,导入 Nginx 的官方 GPG 密钥,以便验证安…...
[Hive高级特性与 DDL和DML语法]
目录 🎇前言: 🎇 HiveQL语言的基本语法,包括DDL和DML两个方面。 🎇DDL(数据定义语言): 🎇DML(数据操作语言): 🎇 Hive高级特性 多种…...
Web服务器群集:Web基础与HTTP协议
目录 一、理论 1.Web基础 2.HTTP协议 二、实验 1.浏览本地HTML页面 三、总结 一、理论 1.Web基础 (1)域名和DNS ① 域名 网络是基于TCP/IP 协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP地 址࿰…...
cmd命令常用速记
cmd命令大全 常见的appwiz.cpl control calc 等,各类功能、设置、甚至是文件属性和系统版本,都可以通过命令的方式快速查看和操作,有助于我们的提高工作效率,具体见下文。 cmd命令:开始->运行->键入…...
Python网络爬虫基础进阶到实战教程
文章目录 认识网络爬虫HTML页面组成Requests模块get请求与实战效果图代码解析 Post请求与实战代码解析 发送JSON格式的POST请求使用代理服务器发送POST请求发送带文件的POST请求 Xpath解析XPath语法的规则集:XPath解析的代码案例及其详细讲解:使用XPath解…...
树莓派使用VNC、SSH、Xrdp等方式进行远程控制的方法和注意事项
下面来总结一下远程操控树莓派用到的三种方式及其注意事项,其实这三种方式对于所有的Linux系统来说都是适用的。 目录 一、ssh控制树莓派 1.开启 ssh服务方法一 2.开启 ssh服务方法二 二、VNC远程连接 三、xrdp远程连接 四、其他注意事项 一、ssh控制树莓派 S…...
C++ 第二弹封装-类和对象
目录 1.类的引入 2.类的定义方式 3.访问权限 4.封装 5.类也是作用域 6.类的实例化 7.如何求一个类的大小 8.this指针 9.默认成员函数 10.构造函数 11.析构函数 12.拷贝构造函数 13.赋值运算符重载 14.const的类成员 15初始化列表 16.static的类成员 17.友元 …...
浅析 GeoServer CVE-2023-25157 SQL注入
原创稿件征集 邮箱:eduantvsion.com QQ:3200599554 黑客与极客相关,互联网安全领域里 的热点话题 漏洞、技术相关的调查或分析 稿件通过并发布还能收获 200-800元不等的稿酬 更多详情,点我查看! 简介 GeoServer是一个开…...
1001router6-react
文章目录 1 一级路由2 Navigate3 NavLink 自定义高亮样式4 useRoutes()5 嵌套路由6 路由传参6.1 传递params参数6.2 传递search参数6.3 传递state参数 7 编程式导航7.1 路由跳转7.2 前进、后退 8 钩子函数8.1 useInRouterContext()8.2 useNavigationType()8.3 useOutlet()8.4 u…...
前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input
前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id13166 效果图如下: # cc-defineKeyboard #### 使用方法 使用方法 <!-- ref:唯一ref pas…...
VB+ACCESS超市管理系统设计(源代码+系统)
超市管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用 MICROSOFT公司的 VISUAL BASI…...
服装设计师常用网站/长春seo整站优化
1第五人格1相信很多玩家都知道每个赛季都会公布一些角色的推演故事,玩家把这些有趣的故事串联起来就可以发现庄园中的秘密,而在全新的第九赛季,官方开放了两个求生者的推演任务。他们分别是杂技演员和野人,趣游君也在第一时间完成…...
中山网站建设文化价位/怎样推广公司的网站
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 原型模式是一个很简单的模式,它适用于我们要复制一个对象的时候。 那在 UI 自动化中&…...
做网站如何分页/郑州关键词seo
【功能的具体化】首先,因为经我改造后的 rabbitmq-c 客户端程序是基于 libevent 的,所以天然可以做到单线程中同时处理多 TCP 连接。理论上,可以对外宣称”该客户端程序支持任意数量生产者和消费者的组合“,而不用担心多线程切换的…...
特色的南昌网站制作/做网站的费用
我们之前在缓存架构之redis中,主要讲解的是redis是如何支持高并发的,它的内部原理的基本思路等。在一个高并发的系统中,redis就是底层的缓存存储的支持,可以说是重中之重。 但是不要以为,做个缓存,就是用一…...
医院行业网站/怎么弄属于自己的网站
文章目录1 创建一个Maven项目2. 创建一个代码生成器的类3. 执行代码生成器类平常的开发工作中,一直自己动手敲 entity、mapper、mapper.xml、service、controller,不仅麻烦,还严重影响开发效率。有这闲工夫,还不如勾搭一下测试的小…...
佛山市手机网站建设/免费com网站域名注册
基于.Net Remoting的人品计算器 这几天一直在学习.Net Remoting,关看书不实践确实有点不踏实。想想最近可能没有什么实际项目可以用到这个技术,只好臆想一个项目了。突然想过一个念头,是不是可以做个学生时代一度很流行的“人品计算器”&…...