4_多对多关联查询
4_多对多关联查询
根据项目编号查询项目信息,以及参与到该项目之中的所有的员工信息
实体类
- @NoArgsConstructor
- @AllArgsConstructor
- @Data
- public class Project implements Serializable {
-
private Integer pid;
-
private String pname;
-
private Integer money;
-
// 组合一个ProjectRecord对象集合作为属性
-
private List<ProjectRecord> projectRecords;
- }
- @Data
- @AllArgsConstructor
- @NoArgsConstructor
- public class ProjectRecord implements Serializable {
-
private Integer empno;
-
private Integer pid;
-
// 组合一个Emp对象作为属性
-
private Emp emp;
- }
接口
- package com.msb.mapper;
- import com.msb.pojo.Emp;
- import com.msb.pojo.Project;
- /**
-
- @Author: Ma HaiYang
-
- @Description: MircoMessage:Mark_7001
- */
- public interface ProjectMapper {
-
/**
-
* 根据项目编号查询一个项目信息及参与该项目的所有员工信息
-
* @param pid 项目编号
-
* @return 所有信息封装的Project对象
-
*/
-
Project findProjectJoinEmpsByPid(int pid);
- }
映射文件
-
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-
<!--Project findProjectJoinEmpsByPid(int pid);-->
-
<resultMap id="projectJoinEmps" type="project">
-
<id column="pid" property="pid"></id>
-
<result column="pname" property="pname"></result>
-
<result column="money" property="money"></result>
-
<!--一对多 集合属性 collection-->
-
<collection property="projectRecords" ofType="projectRecord">
-
<id column="empno" property="empno"></id>
-
<id column="pid" property="pid"></id>
-
<!--一对一 -->
-
<association property="emp" javaType="emp">
-
<id property="empno" column="empno"></id>
-
<result property="ename" column="ename"></result>
-
<result property="job" column="job"></result>
-
<result property="sal" column="sal"></result>
-
<result property="hiredate" column="hiredate"></result>
-
<result property="mgr" column="mgr"></result>
-
<result property="comm" column="comm"></result>
-
<result property="deptno" column="deptno"></result>
-
</association>
-
</collection>
-
</resultMap>
-
<select id="findProjectJoinEmpsByPid" resultMap="projectJoinEmps">
-
select * from
-
project p
-
left join projectrecord pr
-
on p.pid = pr.pid
-
left join emp e
-
on e.empno = pr.empno
-
where p.pid= #{pid}
-
</select>
测试代码
- @Test
- public void testManyToMany() throws ParseException {
-
ProjectMapper mapper = sqlSession.getMapper(ProjectMapper.class);
-
Project project = mapper.findProjectJoinEmpsByPid(2);
-
System.out.println(project.getPid());
-
System.out.println(project.getPname());
-
System.out.println(project.getMoney());
-
List<ProjectRecord> projectRecords = project.getProjectRecords();
-
for (ProjectRecord projectRecord : projectRecords) {
-
Emp emp = projectRecord.getEmp();
-
System.out.println(emp);
-
}
- }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!