Java学习笔记--多表查询项目开发步骤

作者:zinghoWU

时间:2026-01-28 21:08:11 星期三

知识点

MyBatis 多表映射标签

  • association (多对一,一对一):用于"员工--部门"的映射
  • collection(一对多):用于"部门--员工"的映射

多表映射的 2 种方式

  1. 方式一:嵌套结果 -- 联表(引用外部ResultMap)
    逻辑:通过LEFT JOIN一次查询出多表数据,复用外部 Mapper 的 ResultMap
    优点:效率高,仅执行一次SQL
  2. 方式 二:嵌套查询(子查询)
    逻辑:先查主表(本项目中是员工表),再通过select调用其他Mapper的方法(本项目中selectById()方法)查询关联表(部门),用column关联字段
    优点:灵活,数据量少时推荐

左查询

select 字段 from 主表名 left jion 从表 on 条件
主表全部显示,从表若没有数据显示null

步骤 1:搭建项目环境(Maven + 依赖)

image

步骤 2:配置 pom.xml,工具类(util)和MyBatis 核心文件

pom.xml 配置项目所需信息.比如Juit,slf4j等,配置之后就不用导jar包了
db.properties 配置数据库 URL、用户名、密码
log4j.properties 日志
mybatis-config.xml Mapper映射相关配置文件
util 工具类直接拷贝,里面封装了获取 SqlSessionFactory 对象打开一个SqlSession对象的方法和一个包含了commit()和close()的方法

步骤3:编写接口和实现类框架

在mapper包下创建impl子包,用于存储对应Mapper接口的实现类
接口以XXXMapper方式命名,注意写完不要漏了 实现接口的语句(图中 implements EmpMapper)
image

步骤 4:编写实体类(Dept和Emp)

部门类

image
部门-->员工 是一对多关系,所以要在一个类Emp中包含关联属性 List empList(一个部门对应多个员工)

员工类

image
同理,员工-->部门 是多对一关系,所以要在部门类Dept中包含关联属性 Dept dept

步骤 5:编写 Test测试类,接口和实现类中的具体方法(通过Alt + Enter快捷键)

image
通过 Alt + Enter快捷键 在Mapper层创建对应的方法,再分别跳转到对应的实现类实现方法,这里以Emp的findAll()方法为例,如图:
image

image

步骤6:编写Mapper XML 映射文件(多表查询核心)

回到mapper层,再次使用Alt + Enter快捷键进行跳转

DeptMapper.xml

image

EmpMapper.xml
image

Emp-->Dept 关系多对一,resultMap用association

image

查询用的是子查询,先查自己(emp表)

image
将结果放在结果集empMap中
再查询dept表,通过调用DeptMapper中的selectById()方法,将结构放在结果集empDeptMap中
image
最后将这两个结果集进行拼接输出

Dept --> Emp 一对多,resultMap用用collection

image

查询用的是外连接 先将dept表数据查询放入结果集deptEmpMap中,然后在结果集中引用EmpMapper的empMap结果集,最后输出
image

posted @ 2026-01-28 23:09  m+7超绝哈基米  阅读(8)  评论(0)    收藏  举报