09【MyBatis多表关联查询】

news/2024/4/27 3:42:34/文章来源:https://blog.csdn.net/Bb15070047748/article/details/128101890

文章目录

  • 三、MyBatis多表关联查询
    • 3.1 表的关系
    • 3.2 一对一查询
      • 3.2.1 搭建环境
      • 3.2.2 需求分析
      • 3.2.3 dao接口
      • 3.2.3 mapper.xml
      • 3.2.4 测试
      • 3.2.5 配置MyBatis一对一关系
        • 1)传统映射:
        • 2)使用`association`标签映射
    • 3.3 一对多查询
      • 3.3.1 需求分析
      • 3.3.2 dao接口
      • 3.3.3 mapper.xml
      • 3.3.4 测试
    • 3.4 多对多关联
      • 3.4.1 需求分析
      • 3.4.2 建立表
      • 3.4.3 实体类
      • 3.4.4 dao
      • 3.4.5 实现User到Role的多对多
      • 3.4.6 实现Role到User的多对多

三、MyBatis多表关联查询

3.1 表的关系

表关系有如下几种

  • 一对多

  • 多对一(MyBatis就是一对一)

  • 一对一

  • 多对多(一对多+一对多)

  • 举例一:

一对多:一个部门下有多个员工

部门与员工的关系:一对多

多对一:多个员工属于一个部门。

员工与部门的关系:多对一

单独拿出一个员工来说,他都只能属于一个部门。所以,在mybatis中把多对一看成了一对一

  • 举例二:

一个用户对应一个身份证号码。那么用户与身份证号码关系就是一对一

  • 举例三:

多对多:一个老师教多个学生。

老师与学生的关系:一对多

一个学生有多个老师。

学生与老师:一对多,这种双向一对多,就是多对多。

3.2 一对一查询

3.2.1 搭建环境

  • SQL脚本:
drop table if exists dept;CREATE TABLE `dept`  (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门名称',`location` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '部门地址',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 ;INSERT INTO `dept` VALUES (1, '研发部', '中国台湾');
INSERT INTO `dept` VALUES (2, '市场部', '中国香港');
INSERT INTO `dept` VALUES (3, '行政部', '中国钓鱼岛');
INSERT INTO `dept` VALUES (4, '销售部', '中国江西');drop table if exists emp;
CREATE TABLE `emp`  (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '员工姓名',`age` int(11) NULL DEFAULT NULL COMMENT '员工年龄',`addr` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '籍贯',`salary` decimal(10, 2) NULL DEFAULT NULL COMMENT '薪资',`dept_id` int(11) NULL DEFAULT NULL COMMENT '部门id',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `emp` VALUES (1, '张三', 20, '广西来宾', 7600.00, 1);
INSERT INTO `emp` VALUES (2, '李四', 22, '浙江绍兴', 6800.00, 4);
INSERT INTO `emp` VALUES (3, '小明', 25, '广东云浮', 6600.00, 2);
INSERT INTO `emp` VALUES (4, '小红', 23, '河南信阳', 7000.00, 3);
INSERT INTO `emp` VALUES (5, '张明', 25, '山东临沂', 8000.00, 1);

Emp实体类:

package com.dfbz.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @author lscl* @version 1.0* @intro:*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {private Integer id;private String name;private Integer age;private String addr;private Double salary;// 一个员工属于一个部门private Dept dept;
}

Dept实体类:

package com.dfbz.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;/*** @author lscl* @version 1.0* @intro:*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dept {private Integer id;private String name;private String location;// 一个部门下有多个员工private List<Emp> empList;
}

3.2.2 需求分析

表关系:

在这里插入图片描述

我们以前的理解是,部门和员工的关系是一对多,员工和部门的关系是多对一;

但是我们拿出单个员工来说,一个员工只属于一个部门,因此在MyBatis中,多对一的关系简化成了一对一;

案例需求:查询所有员工信息,关联查询所属部门信息;在查询过程中,即使有的员工还没有部门也需要查询这个员工的信息,此时在查询过程中,员工表应该是主表;

  • 分析SQL语句:
select e.*,d.* from emp e left join dept d on e.dept_id=d.id

3.2.3 dao接口

  • EmpDao:
public interface EmpDao {List<Emp> findAll();
}

3.2.3 mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dfbz.dao.EmpDao"><select id="findAll" resultType="emp">select e.*,d.* from emp e left join dept d on e.dept_id=d.id</select>
</mapper>

3.2.4 测试

package com.dfbz.test;import com.dfbz.dao.EmpDao;
import com.dfbz.entity.Emp;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** @author lscl* @version 1.0* @intro:*/
public class Demo01 {private SqlSessionFactory factory;private SqlSession session;private EmpDao empDao;@Beforepublic void before() throws IOException {InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();factory = builder.build(is);session = factory.openSession(true);empDao=session.getMapper(EmpDao.class);}@Afterpublic void after() throws IOException {session.close();}@Testpublic void test1() {List<Emp> empList = empDao.findAll();System.out.println(empList);}
}

在这里插入图片描述

3.2.5 配置MyBatis一对一关系

  • 更改SQL语句:
SELECTe.id eId,e.NAME empName,e.age,e.addr,e.salary,e.dept_id deptId,d.NAME deptName,d.location 
FROMemp eleft JOIN dept d ON e.dept_id = d.id

1)传统映射:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dfbz.dao.EmpDao"><resultMap id="empResultMap" type="emp"><id column="eId" property="id"></id><result column="empName" property="name"></result><result column="addr" property="addr"></result><result column="salary" property="salary"></result><result column="deptId" property="dept.id"></result><result column="deptName" property="dept.name"></result><result column="location" property="dept.location"></result></resultMap><select id="findAll" resultMap="empResultMap">SELECTe.id eId,e.NAME empName,e.addr,e.salary,e.dept_id deptId,d.name deptName,d.locationFROMemp eLEFT JOIN dept d ON e.dept_id = d.id</select>
</mapper>

2)使用association标签映射

<resultMap id="empResultMap" type="emp"><id column="eId" property="id"></id><result column="empName" property="name"></result><result column="addr" property="addr"></result><!--在使用关系映射时,即使查询出来的列明和实体类的属性名一致,也要手动映射--><result column="salary" property="salary"></result><association property="dept" javaType="com.dfbz.entity.Dept"><id column="deptId" property="id"></id><result column="deptName" property="name"></result><!--在使用关系映射时,即使查询出来的列明和实体类的属性名一致,也要手动映射--><result column="location" property="location"></result></association></resultMap>
<select id="findAll" resultMap="empResultMap">SELECTe.id eId,e.NAME empName,e.addr,e.salary,d.id deptId,d.name deptName,d.location
FROMemp eLEFT JOIN dept d ON e.dept_id = d.id
</select>

Tips:映射多表关联的结果集时,即使查询出来的列名与属性名一致,也要建立手动映射关系,否则将会导致查询的值无法映射到对应的列;

3.3 一对多查询

3.3.1 需求分析

需求:查询部门信息以及部门下面所属员工信息

分析:部门和员工的信息为一对多关系,并且查询过程中,如果有的部门没有员工,此时也需要将部门信息查询出来,因此在查询中,部门表应该是主表;

  • 分析SQL语句:
SELECTe.id eId,e.NAME empName,e.addr,e.salary,e.dept_id deptId,d.NAME deptName,d.location 
FROMemp eright JOIN dept d ON e.dept_id = d.id

3.3.2 dao接口

List<Dept> findAll();

3.3.3 mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dfbz.dao.DeptDao"><resultMap id="deptResultMap" type="dept"><id column="deptId" property="id"></id><result column="deptName" property="name"></result><!-- 在使用关系映射时,即使查询出来的列明和实体类的属性名一致,也要手动映射 --><result column="location" property="location"></result><!--property: Dept对象中的属性ofType:集合中的泛型类型--><collection property="empList" ofType="com.dfbz.entity.Emp"><id column="eId" property="id"></id><result column="empName" property="name"></result><result column="addr" property="addr"></result><!-- 在使用关系映射时,即使查询出来的列明和实体类的属性名一致,也要手动映射 --><result column="salary" property="salary"></result></collection></resultMap><select id="findAll" resultMap="deptResultMap">SELECTe.id eId,e.NAME empName,e.addr,e.salary,e.dept_id deptId,d.NAME deptName,d.locationFROMemp eright JOIN dept d ON e.dept_id = d.id</select>
</mapper>

3.3.4 测试

@Test
public void test2() {List<Dept> deptList = deptDao.findAll();System.out.println(deptList);
}

3.4 多对多关联

3.4.1 需求分析

示例:用户和角色

​ 一个用户可以有多个角色

​ 一个角色可以赋予多个用户

步骤:

​ 1、建立两张表:用户表,角色表让用户表和角色表具有多对多的关系。需要使用中间表,中间表需要外键引用用户表、角色表。

​ 2、建立两个实体类:用户实体类和角色实体类让用户和角色的实体类能体现出来多对多的关系各自包含对方一个集合引用

​ 3、建立两个配置文件用户的配置文件角色的配置文件

​ 4、实现配置:

​ 当我们查询用户时,可以同时得到用户所包含的角色信息

​ 当我们查询角色时,可以同时得到角色的所赋予的用户信息

3.4.2 建立表

DROP TABLE IF EXISTS `role`;
CREATE TABLE `role`  (`id` int(11) NOT NULL,`role_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`role_desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE,INDEX `id`(`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `role` VALUES (1, '保洁', '扫地');
INSERT INTO `role` VALUES (2, '厨师', '做饭');
INSERT INTO `role` VALUES (3, '保安', '维护治安');DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`birthday` date NULL DEFAULT NULL,`sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `user` VALUES (1, '张三', '1999-02-04', '男', '佛山');
INSERT INTO `user` VALUES (2, '李四', '1998-01-15', '女', '湛江');DROP TABLE IF EXISTS `user_role`;
CREATE TABLE `user_role`  (`uid` int(11) NOT NULL COMMENT '用户编号',`rid` int(11) NOT NULL COMMENT '角色编号',PRIMARY KEY (`uid`, `rid`) USING BTREE,INDEX `FK_Reference_10`(`rid`) USING BTREE,CONSTRAINT `FK_Reference_10` FOREIGN KEY (`rid`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT `FK_Reference_9` FOREIGN KEY (`uid`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `user_role` VALUES (1, 1);
INSERT INTO `user_role` VALUES (2, 1);
INSERT INTO `user_role` VALUES (1, 2);
INSERT INTO `user_role` VALUES (2, 2);
INSERT INTO `user_role` VALUES (2, 3);

3.4.3 实体类

  • User:
package com.dfbz.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;
import java.util.List;/*** @author lscl* @version 1.0* @intro:*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private int  id;private String username;private Date birthday;private String sex;private String address;// 一个用户,有多个角色private List<Role> roles;
}
  • Role:
package com.dfbz.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;/*** @author lscl* @version 1.0* @intro:*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Role {private int  roleId;private String roleName;private String roleDesc;// 一个角色,对应多个用户private List<User> users;
}

3.4.4 dao

  • UserDao:
public interface UserDao {List<User> findAll();
}
  • RoleDao:
public interface RoleDao {List<Role> findAll();
}

3.4.5 实现User到Role的多对多

  • SQL语句:
SELECTu.*,r.id rid,r.role_name,r.role_desc 
FROMUSER uLEFT JOIN user_role ur ON u.id = ur.uidLEFT JOIN role r ON r.id = ur.rid
  • mapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dfbz.dao.UserDao"><resultMap id="userResultMap" type="user"><id property="id" column="id"></id><result property="username" column="username"></result><result property="birthday" column="birthday"></result><result property="sex" column="sex"></result><result property="address" column="address"></result><collection property="roles" ofType="role"><id property="roleId" column="rid"></id><result property="roleName" column="role_name"></result><result property="roleDesc" column="role_desc"></result></collection></resultMap><select id="findAll" resultMap="userResultMap">selectu.*,r.id rid,r.role_name,r.role_descfrom user uleft join user_role ur on u.id=ur.uidleft join role r on r.id=ur.rid</select>
</mapper>

测试类:

@Test
public void test3() {List<User> userList = userDao.findAll();System.out.println(userList);
}

3.4.6 实现Role到User的多对多

  • SQL语句:
SELECTr.*,u.id uid,u.username,u.birthday,u.sex,u.address 
FROMrole rLEFT JOIN user_role ur ON r.id = ur.ridLEFT JOIN USER u ON u.id = ur.uid
  • mapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dfbz.dao.RoleDao"><resultMap id="roleResultMap" type="role"><id property="roleId" column="id"></id><result property="roleName" column="role_name"></result><result property="roleDesc" column="role_desc"></result><collection property="users" ofType="user"><id property="id" column="uid"></id><result property="username" column="username"></result><result property="birthday" column="birthday"></result><result property="sex" column="sex"></result><result property="address" column="address"></result></collection></resultMap><select id="findAll" resultMap="roleResultMap">selectr.*,u.id uid,u.username,u.birthday,u.sex,u.addressfrom role rleft join user_role ur on r.id=ur.ridleft join user u on u.id = ur.uid</select>
</mapper>
  • 测试类:
@Test
public void test4() {List<Role> roleList = roleDao.findAll();System.out.println(roleList);
}

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kamiya丨Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验说明书

Kamiya艾美捷大鼠微量白蛋白酶联免疫吸附试验预期用途&#xff1a; 大鼠微量白蛋白酶联免疫吸附试验&#xff08;ELISA&#xff09;是一种高灵敏度的双位点酶联免疫吸附试验&#xff08;ELISA&#xff09;大鼠生物样品中微量白蛋白的测定。仅供研究使用。 引言 白蛋白&#x…

SpringBoot、EasyPoi、Echarts 实现文档导入、出、图表显示 (饼状图、柱状图) 保姆级教程

一、介绍环境 EasyPOI: 现在我们就来介绍下EasyPoi,首先感谢EasyPoi 的开发者​。EasyPoi开源 easypoi 是为了让开发者快速的实现excel&#xff0c;word,pdf的导入导出&#xff0c;基于Apache poi基础上的一个工具包。easypoi教程 Echarts: …

转扩!寻找G2022次列车“旅客”

各位求职朋友大家好&#xff0c;欢迎乘坐G2022次列车 本次列车为6节编组&#xff0c;由上海开往北京&#xff0c;途径宁波、重庆 本次列车乘务组全体工作人员为您提供全方位福利待遇 上车地址&#xff1a;上海擎创信息技术有限公司 - 社会招聘 (eoitek.com) 如您还需其他帮助…

Java给图片增加水印,根据图片大小自适应,右下角/斜角/平铺

Hi&#xff0c;I’m Shendi 最近写自己的文件服务器&#xff0c;上传图片时需要自动增加水印&#xff0c;在这里记录一下 文章目录效果展示读取图片从 byte[] 读取图片获取画板绘制水印根据图片大小自适应水印大小右下角文字水印斜角水印平铺水印图片水印输出图片水印就是在图片…

SLAM学习笔记(二)

5.相机与图像 相机将三维世界中的坐标点&#xff08;单位米&#xff09;映射到二维图像平面&#xff08;单位为像素&#xff09;的过程中能够用一个几何模型进行描述。 单目相机(Mono)的成像过程&#xff1a; 1、世界坐标系下有个固定的点P&#xff0c;世界坐标为 2、由于相…

基于Java+SSM+Vue+ElementUi的汉语言类网上考试系统

项目介绍 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信…

前置微小信号放大器在光声技术的血管识别研究中的应用

实验名称&#xff1a;前置微小信号放大器在光声技术的血管识别研究中的应用 研究方向&#xff1a;生物识别技术 测试目的&#xff1a; 利用MATLAB对光声血管进行识别&#xff1a;1、对光声血管图库的图像进行预处理包括归一化、二值化、平滑、细化和毛刺修剪得到细化图像&#…

【安卓逆向】去除云注入(使用MT论坛dl的方法总结拓展)

1 需求 因为最近使用的虚拟机突然不能用了&#xff0c;被人云注入强制弹窗&#xff0c;如下图&#xff1a;&#xff08;这一看就是云注入了&#xff09; 2 大佬的方法 如图&#xff08;MT大佬分享的&#xff0c;感兴趣的朋友可以去大佬主页看看他其他文章&#xff09;&…

蓝海创意云接受【看苏州】独家专访:助力苏州数字文化行业全方位发展

近日&#xff0c;由蓝海创意云提供渲染服务的动漫电影《老鹰抓小鸡》获金鸡奖最佳美术片提名&#xff0c;位列获奖名单的《长津湖》《独行月球》也由蓝海创意云渲染提供了后期服务。 就此&#xff0c;苏州广播电视总台旗下的苏州权威热点新闻和视频平台【看苏州】对蓝海彤翔执…

[附源码]计算机毕业设计springboot基于Java的失物招领平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

用R Shiny生态快速搭建交互Web网页APP应用

什么是Shiny&#xff1f; Shiny包可以快速搭建基于R的交互网页应用。对于web的交互&#xff0c;之前已经有一些相关的包&#xff0c;不过都需要开发者熟悉网页编程语言&#xff08;html,CSS,JS&#xff09;。最近我们被客户要求撰写关于R Shiny的研究报告&#xff0c;包括一些…

快速复现 实现 facenet-pytorch 人脸识别 windows上 使用cpu实现 人脸对比

目录0 前言1 搭建环境与项目2 人脸预测与结果展示0 前言 这一次要复现的是人脸识别中的 facenet-pytorch 参考了&#xff1a; Pytorch 搭建自己的Facenet人脸识别网络&#xff08;Bubbliiiing 深度学习 教程&#xff09; https://gitee.com/xiaozhao123666/facenet-pytorch ht…

分布式消息中间件RabbitMQ解析

RabbitMQ作为分布式消息存储和转发系统&#xff0c;已广泛使用于分布式系统中。本文简要介绍RabbitMQ相关概念、集群架构和消息转发流程&#xff0c;并与Kafka做了简要对比&#xff0c;以加深理解。 1、RabbitMQ相关概念 1.1 AMQP介绍 消息&#xff08;Message&#xff09;是…

Zookeeper(一)- Zookeeper介绍与集群部署

文章目录一、Zookeeper 介绍1. Zookeeper概述2. Zookeeper工作机制3. Zookeeper特点4. Zookeeper数据结构5. Zookeeper应用场景&#xff08;1&#xff09;统一命名服务&#xff08;2&#xff09;统一配置管理&#xff08;3&#xff09;统一集群管理&#xff08;4&#xff09;服…

低代码与mes生产管理系统:功能篇

随着信息技术的发展和应用,信息系统在企业中的使用也越来越广泛。不仅可以使企业内部和企业间的信息流通更为便捷和频繁&#xff0c;同时可以提高管理的水平&#xff0c;有助于提高企业的生产效益。其中mes生产管理系统就是美豳的调查资询公司AMR(Advanced Manufacturing Resea…

【目标检测】Faster R-CNN的几点理解

目录&#xff1a;Faster R-CNN的几点理解一、Faster R-CNN概述二、R-CNN、Fast R-CNN、Faster R-CNN的对照2.1 R-CNN2.1.1 R-CNN的检测步骤2.1.2 R-CNN的主要缺点2.2 Fast R-CNN2.2.1 Fast R-CNN的检测步骤2.2.2 Fast R-CNN的缺点2.3 R-CNN、Fast R-CNN、Faster R-CNN的比较三、…

(二)devops持续集成开发——jenkins的权限管理配置

前言 jenkins作为目前主流的devops工具&#xff0c;受到了广大开发用户的追捧。由于其丰富的插件库&#xff0c;其可插拔的功能使得其功能和生态都十分强大。本节内容是关于jenkins的权限管理组件Role-based Authorization Strategy的安装及使用。 正文 下载安装Role-based A…

ThinkPHP5文档学习——配置

文章目录一、配置目录二、配置格式PHP数组定义其它格式的支持二级配置三、配置加载惯例配置应用配置拓展配置场景配置四、读取配置参数五、动态配置设置配置参数六、独立配置独立配置文件V5.0.1版本已经废除该写法自动读取扩展配置七、配置作用域八、环境变量配置一、配置目录 …

历届图灵奖得主盘点

图灵奖&#xff0c;全称A.M.图灵奖&#xff08;ACM A.M Turing Award&#xff09;&#xff0c;是由美国计算机协会于1966年设立的计算机奖项&#xff0c;名称取自艾伦麦席森图灵&#xff0c;旨在奖励对计算机事业作出重要贡献的个人 。图灵奖对获奖条件要求极高&#xff0c;评奖…

第十三章《集合》第3节:Set集合

Set也是Collection的子接口,它定义了另一种形式的集合,专业上称之为Set集合。Set集合的特点如图13-9所示。 图13-9 Set类型集合 从图13-9可以看出:Set类型的集合就像是一个装苹果的筐子,程序员只要把元素存入这个筐子即可。集合中的元素像是胡乱堆积在一起,因此元素没有索…