MyBatis的关联映射

目录

​编辑

文章目录

前言

一、表与表之间的关系

一对一:

一对多:

多对一:

多对多:

二、多对一

1.创建接口MoreMapper

在MoreMapper里面写入方法,通过员工ID来查询员工的信息以及部门的信息,员工表代表多的一方。

2.创建 MoreMapper.xml文件来写Sql语句

在文件中,namespace要写接口的唯一标识,即在包下的位置,然后将方法名复制过来,对应查询的id即可。

3、多对一查询实现的三种方法 

方法一、用表名.属性名

方法一测试类MoreMapperTest

方法二、用association标签

方法三、用分步查询

三、一对多的使用

1.创建接口LessMapper

2、多对一查询实现的两种方法 

方法一、用collection标签

方法二、用分步查询

四、总结


文章目录

  • 一、表与表之间的关系
  • 二、多对一的使用
  • 三、一对多的使用
  • 四、总结

前言

        在实际开发中,根据业务需要,数据表之间往往会存在某种关联关系,例如:一对一,一对多,多对一,多对多等,当程序操作数据库时,如果被操作的表与其他表相关联,那么处理这些表中的数据时必须要考虑它们之间的关联关系。

        为此,MyBatis提供了映射表之间关联关系的功能,如此一来,使用MyBatis能够以简洁的方式操作多张表。


一、表与表之间的关系

一对一:

        在一对一关系中,一方数据表中的一条记录最多可以和另一方数据表中的一条记录相关。例如:人的角度:一个人只能有一张身份证,身份证角度:一张身份证只能属于一个人。

一对多:

        在一对多关系中,主键数据表中的一条记录可以和另外一张数据表的多条记录相关。例如:班级角度:一个班级可以有多名学生。学生角度:一个学生只能属于一个班级。

多对一:

        在多对一关系中,外键数据表的每一个数据可以和另外一张表的一条数据相对应。例如:

球员角度:多名球员属于一个球队。球队角度:一个球队里面的球员是唯一的(与一对多相反)

多对多:

        在多对多关系中,两个数据表里的每一条记录都可以和另外一张表里的每一条记录相关。例如:学生角度:一名学生由多名老师授课,老师角度:一名老师为多个学生授课。

二、多对一

现有emp员工表和dept部门表如下:

1.创建接口MoreMapper

在MoreMapper里面写入方法,通过员工ID来查询员工的信息以及部门的信息,员工表代表多的一方。

package com.mybatis.mapper;import com.mybatis.pojo.Emp;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface MoreMapper {//通过员工Id来查询员工信息和部门信息List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);
}

2.创建 MoreMapper.xml文件来写Sql语句

在文件中,namespace要写接口的唯一标识,即在包下的位置,然后将方法名复制过来,对应查询的id即可。

<?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.mybatis.mapper.MoreMapper">
<!--    List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);--><select id="selectEmpAndDeptByEmpId" ></select></mapper>

3、多对一查询实现的三种方法 

方法一、用表名.属性名

<?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.mybatis.mapper.MoreMapper">
<!--    List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);-->
<!--    方法一--><resultMap id="selectOne" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><result column="dept_id" property="dept.deptId"></result><result column="dept_name" property="dept.deptName"></result></resultMap><select id="selectEmpAndDeptByEmpId" resultMap="selectOne">select *from emp join dept on emp.emp_id = dept.dept_idwhere emp_id = #{empId}</select></mapper>

运用resultMap来查询多个表,id标签代表查询的主键 ,

id里面的column写数据库的字段名,property写实体类对象的属性名。

方法一使用数据库里面的字段外键,属性名用点表示实体类里面的名字

方法一测试类MoreMapperTest

import com.mybatis.SqlSessionUtil;
import com.mybatis.mapper.MoreMapper;
import com.mybatis.pojo.Emp;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.util.List;public class MoreMapperText {@Testpublic void textSelectEmpAndDeptByEmpId(){SqlSession sqlSession = SqlSessionUtil.getSqlSession();MoreMapper mapper = sqlSession.getMapper(MoreMapper.class);List<Emp> emps = mapper.selectEmpAndDeptByEmpId(1);System.out.println(emps);}
}

测试运行:

方法一测试成功!!!

方法二、用association标签

<?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.mybatis.mapper.MoreMapper">
<!--    List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);-->
<!--    方法一--><resultMap id="selectOne" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><result column="dept_id" property="dept.deptId"></result><result column="dept_name" property="dept.deptName"></result></resultMap><!--   方法二  association:处理多对一的映射关系--><resultMap id="selectTwo" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><association property="dept" javaType="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result></association></resultMap><select id="selectEmpAndDeptByEmpId" resultMap="selectTwo">select *from emp join dept on emp.emp_id = dept.dept_idwhere emp_id = #{empId}</select></mapper>

测试运行:

方法二测试成功!!!

方法三、用分步查询

分步查询第一步:

只查询Emp表里面的全部内容

在MoreMapper里面写入分步查询第一步方法

package com.mybatis.mapper;import com.mybatis.pojo.Emp;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface MoreMapper {//通过员工Id来查询员工信息和部门信息List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);//分步查询第一步List<Emp> selectEmpAndDeptByStepOne(@Param("empId") Integer empId);
}

在MoreMapper.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.mybatis.mapper.MoreMapper">
<!--    List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);-->
<!--    方法一--><resultMap id="selectOne" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><result column="dept_id" property="dept.deptId"></result><result column="dept_name" property="dept.deptName"></result></resultMap><!--   方法二  association:处理多对一的映射关系--><resultMap id="selectTwo" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><association property="dept" javaType="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result></association></resultMap><select id="selectEmpAndDeptByEmpId" resultMap="selectTwo">select *from emp join dept on emp.emp_id = dept.dept_idwhere emp_id = #{empId}</select><!--第一步    List<Emp> selectEmpAndDeptByStepOne(@Param("empId") Integer empId);--><resultMap id="MoreMapperOne" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><association property="dept" select=""column=""></association></resultMap><select id="selectEmpAndDeptByStepOne" resultMap="">select *from emp where emp_id = #{empId}</select></mapper>

resultMap里面的关键字select表示第二步查询方法的唯一标识,column为查询的条件

开始准备分步查询第二步,创建LessMapper接口写入方法名

package com.mybatis.mapper;import com.mybatis.pojo.Dept;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface LessMapper {//多对一分步查询第二步List<Dept> selectEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);}

 在LessMapper.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.mybatis.mapper.LessMapper">
<!--    List<Dept> selectEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);--><select id="selectEmpAndDeptByStepTwo" resultType="Dept">select *from dept where dept_id = #{dept}</select>
</mapper>

完善MoreMapper里面的select和column

<?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.mybatis.mapper.MoreMapper">
<!--    List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);-->
<!--    方法一--><resultMap id="selectOne" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><result column="dept_id" property="dept.deptId"></result><result column="dept_name" property="dept.deptName"></result></resultMap><!--   方法二  association:处理多对一的映射关系--><resultMap id="selectTwo" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><association property="dept" javaType="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result></association></resultMap><select id="selectEmpAndDeptByEmpId" resultMap="selectTwo">select *from emp join dept on emp.emp_id = dept.dept_idwhere emp_id = #{empId}</select><!--第一步    List<Emp> selectEmpAndDeptByStepOne(@Param("empId") Integer empId);--><resultMap id="MoreMapperOne" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><association property="dept"select="com.mybatis.mapper.LessMapper.selectEmpAndDeptByStepTwo"column="dept_id"></association></resultMap><select id="selectEmpAndDeptByStepOne" resultMap="MoreMapperOne">select *from emp where emp_id = #{empId}</select></mapper>

最后开始测试:

 分步查询成功!!!


三、一对多的使用

现在我们把Emp表当成多,Dept表当成一,在LessMapper里面写则可以实现一对多

1.创建接口LessMapper

package com.mybatis.mapper;import com.mybatis.pojo.Dept;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface LessMapper {//多对一分步查询第二步List<Dept> selectEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);//一对多查询List<Dept> selectEmpAndDeptByDeptId(@Param("deptId") Integer deptId);}

2、多对一查询实现的两种方法 

方法一、用collection标签

<?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.mybatis.mapper.LessMapper">
<!--    List<Dept> selectEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);--><select id="selectEmpAndDeptByStepTwo" resultType="Dept">select *from dept where dept_id = #{dept}</select><!--  List<Dept> selectEmpAndDeptByDeptId(@Param("deptId") Integer deptId);-->
<!--    一对多查询方法一--><resultMap id="selectOne" type="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result><collection property="emps" ofType="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result></collection></resultMap><select id="selectEmpAndDeptByDeptId" resultMap="selectOne">select *from dept join emp on dept.dept_id = emp.dept_id where dept.dept_id = #{deptId}</select>
</mapper>

测试结果如下:

方法一测试成功!!!

方法二、用分步查询

分步查询第一步:

只查询Dept表里面的全部内容

在LessMapper里面写入分步查询第一步方法

package com.mybatis.mapper;import com.mybatis.pojo.Dept;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface LessMapper {//多对一分步查询第二步List<Dept> selectEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);//一对多查询List<Dept> selectEmpAndDeptByDeptId(@Param("deptId") Integer deptId);//一对多分步查询第一步List<Dept> selectDeptAndEmpByStepOne(@Param("deptId") Integer deptId);}

在LessMapper.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.mybatis.mapper.LessMapper">
<!--    List<Dept> selectEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);--><select id="selectEmpAndDeptByStepTwo" resultType="Dept">select *from dept where dept_id = #{dept}</select><!--  List<Dept> selectEmpAndDeptByDeptId(@Param("deptId") Integer deptId);-->
<!--    一对多查询方法一--><resultMap id="selectOne" type="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result><collection property="emps" ofType="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result></collection></resultMap><select id="selectEmpAndDeptByDeptId" resultMap="selectOne">select *from dept join emp on dept.dept_id = emp.dept_id where dept.dept_id = #{deptId}</select><!--    List<Dept> selectDeptAndEmpByStepOne(@Param("deptId") Integer deptId);-->
<!--    一对多方法二 第一步--><resultMap id="LessMapperOne" type="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result><collection property="emps" select=""column=""></collection></resultMap><select id="selectDeptAndEmpByStepOne" resultMap="LessMapperOne">select *from dept where dept_id = #{deptId}</select>
</mapper>

resultMap里面的关键字select表示第二步查询方法的唯一标识,column为查询的条件

开始准备分步查询第二步,创建MoreMapper接口写入方法名

package com.mybatis.mapper;import com.mybatis.pojo.Emp;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface MoreMapper {//通过员工Id来查询员工信息和部门信息List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);//多对一分步查询第一步List<Emp> selectEmpAndDeptByStepOne(@Param("empId") Integer empId);//一对多分步查询第二步List<Emp> selectDeptAndEmpByStepTwo(@Param("deptId") Integer deptId);
}

 在LessMapper.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.mybatis.mapper.MoreMapper">
<!--    List<Emp> selectEmpAndDeptByEmpId(@Param("empId") Integer empId);-->
<!--    方法一--><resultMap id="selectOne" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><result column="dept_id" property="dept.deptId"></result><result column="dept_name" property="dept.deptName"></result></resultMap><!--   方法二  association:处理多对一的映射关系--><resultMap id="selectTwo" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><association property="dept" javaType="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result></association></resultMap><select id="selectEmpAndDeptByEmpId" resultMap="selectTwo">select *from emp join dept on emp.emp_id = dept.dept_idwhere emp_id = #{empId}</select><!--第一步    List<Emp> selectEmpAndDeptByStepOne(@Param("empId") Integer empId);--><resultMap id="MoreMapperOne" type="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result><association property="dept"select="com.mybatis.mapper.LessMapper.selectEmpAndDeptByStepTwo"column="dept_id"></association></resultMap><select id="selectEmpAndDeptByStepOne" resultMap="MoreMapperOne">select *from emp where emp_id = #{empId}</select><!--    List<Emp> selectDeptAndEmpByStepTwo(@Param("deptId") Integer deptId);-->
<!--    一对多分步查询第二步--><select id="selectDeptAndEmpByStepTwo" resultType="Emp">select * from emp where dept_id = #{deptId}</select></mapper>

完善LessMapper里面的select和column

<?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.mybatis.mapper.LessMapper">
<!--    List<Dept> selectEmpAndDeptByStepTwo(@Param("deptId") Integer deptId);--><select id="selectEmpAndDeptByStepTwo" resultType="Dept">select *from dept where dept_id = #{dept}</select><!--  List<Dept> selectEmpAndDeptByDeptId(@Param("deptId") Integer deptId);-->
<!--    一对多查询方法一--><resultMap id="selectOne" type="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result><collection property="emps" ofType="Emp"><id column="emp_id" property="empId"></id><result column="emp_name" property="empName"></result><result column="age" property="age"></result><result column="gender" property="gender"></result></collection></resultMap><select id="selectEmpAndDeptByDeptId" resultMap="selectOne">select *from dept join emp on dept.dept_id = emp.dept_id where dept.dept_id = #{deptId}</select><!--    List<Dept> selectDeptAndEmpByStepOne(@Param("deptId") Integer deptId);-->
<!--    一对多方法二 第一步--><resultMap id="LessMapperOne" type="Dept"><id column="dept_id" property="deptId"></id><result column="dept_name" property="deptName"></result><collection property="emps"select="com.mybatis.mapper.MoreMapper.selectDeptAndEmpByStepTwo"column="dept_id"></collection></resultMap><select id="selectDeptAndEmpByStepOne" resultMap="LessMapperOne">select *from dept where dept_id = #{deptId}</select>
</mapper>

开始测试:

分步查询成功!!!


四、总结

创作不易,请大家多多点赞多多支持,努力创造出更好的作品!!!

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

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

相关文章

ChatGPT启蒙之旅:弟弟妹妹的关键概念入门

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

基于Java的校园二手书交易平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【数据结构】堆,堆的实现,堆排序,TOP-K问题

大家好&#xff01;今天我们来学习数据结构中的堆及其应用 目录 1. 堆的概念及结构 2. 堆的实现 2.1 初始化堆 2.2 销毁堆 2.3 打印堆 2.4 交换函数 2.5 堆的向上调整 2.6 堆的向下调整 2.7 堆的插入 2.8 堆的删除 2.9 取堆顶的数据 2.10 堆的数据个数 2.11 堆的判…

C/C++学习 -- 分组密算法(3DES算法)

1. 3DES算法概述 3DES&#xff08;Triple Data Encryption Standard&#xff09;&#xff0c;又称为TDEA&#xff08;Triple Data Encryption Algorithm&#xff09;&#xff0c;是一种对称加密算法&#xff0c;是DES&#xff08;Data Encryption Standard&#xff09;的加强版…

GPT系列论文解读:GPT-1

GPT系列 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一系列基于Transformer架构的预训练语言模型&#xff0c;由OpenAI开发。以下是GPT系列的主要模型&#xff1a; GPT&#xff1a;GPT-1是于2018年发布的第一个版本&#xff0c;它使用了12个Transformer…

【STL】用哈希表(桶)封装出unordered_set和unordered_map

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C进阶 ⭐代码仓库&#xff1a;C进阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

C++基础语法(多态)

多态的学习是建立在继承之上的&#xff0c;如果你没有事先了解学习过继承&#xff0c;请去看看笔者写的关于继承的文章&#xff0c;对继承有概念之后&#xff0c;再来学习多态。多态的坑是相当的多&#xff0c;如果未来就业&#xff0c;公司对多态的考察也是让人直呼&#xff1…

【网络模型】OSI七层网络模型、TCP/IP网络模型、键入网址到页面显示的过程、DNS是什么等重点知识汇总

目录 OSI 的七层模型 TCP/IP 网络模型 键入网址到网页显示发生了什么 你知道DNS是什么&#xff1f; OSI 的七层模型 简要概括 应用层&#xff1a;为用户的应用进程提供网络通信服务表示层&#xff1a;处理用户信息的表示问题&#xff0c;数据的编码&#xff0c;压缩和解压…

IDEA踩坑记录:查找用法 找到的不全怎么办

在我跟CC1链的时候&#xff0c;对InvokerTransformer类的transform()方法进行右键查找用法时&#xff0c;本来应该找到org.apache.commons.collections.map包中的TransformedMap类调用了此方法&#xff0c;但是结果确是没找到。 解决办法&#xff1a; 点击右上方的Maven选项&a…

【C++类和对象】:构造函数、析构函数、拷贝构造函数、赋值运算符重载

【C类和对象】&#xff1a;构造函数、析构函数、拷贝构造函数、赋值运算符重载 一、构造函数1.1 概念1.2 性质1.3 实例 二、析构函数2.1 概念2.2 性质2.3 实例 三、拷贝构造函数3.1 概念3.2 性质3.3 实例 四、赋值运算符重载4.1 运算符重载4.2 2 赋值运算符重载1. 赋值运算符重…

如何在 Elasticsearch 中使用 Openai Embedding 进行语义搜索

随着强大的 GPT 模型的出现&#xff0c;文本的语义提取得到了改进。 在本文中&#xff0c;我们将使用嵌入向量在文档中进行搜索&#xff0c;而不是使用关键字进行老式搜索。 什么是嵌入 - embedding&#xff1f; 在深度学习术语中&#xff0c;嵌入是文本或图像等内容的数字表示…

Cannot download sources:IDEA源码无法下载

问题 Swagger的相关包&#xff0c;无法看到注释&#xff1b; 在class文件的页面&#xff0c;点击下载源码&#xff0c;源码下载不了&#xff0c;IDEA报下面的错误。 报错 Cannot download sources Sources not found for: io.swagger.core.v3:swagger-annotations:2.2.9 解决…