博客
关于我
SSM | MyBatis 多表联合查询
阅读量:684 次
发布时间:2019-03-17

本文共 2429 字,大约阅读时间需要 8 分钟。

项目总结:三表联合查询优化

前言

在备案地理信息系统项目中,需要实现部门、职位与员工的三表联合查询,但在实际编码过程中遇到了一些问题。本文将从需求分析、数据库设计、实体类编写以及优化实现等方面总结经验。


需求分析

关系类型

  • 部门与员工:一对多关系
  • 职位与员工:一对多关系

关系特点

  • 在“多”这一方表中,默认包含了“一”方表的主键对应字段,例如:
    • 员工表包含 dept_idjob_id
    • 部门表和职位表包含 id字段

数据库表设计

员工表

字段名称 数据类型 说明
id int 主键
dept_id int 关联部门表的主键
job_id int 关联职位表的主键
其他字段 text 姓名、地址、联系电话等

部门表

字段名称 数据类型 说明
id int 主键
name varchar 部门名称
备注 varchar 部门备注

职位表

字段名称 数据类型 说明
id int 主键
name varchar 职位名称
备注 varchar 职位备注

实体类设计

员工类

public class Employee {    private Integer id;    private Integer deptId;    private Integer jobId;    private String name;    // 其他字段...    private Dept dept;    private Job job;}

部门类

public class Dept {    private Integer id;    private String name;    // 该类不直接存储员工信息,员工表中已有对应字段}

职位类

public class Job {    private Integer id;    private String name;    // 该类不直接存储员工信息,员工表中已有对应字段}

Mapper接口与SQL映射

###接口代码

public interface EmployeeMapper {    List
selectAll();}

SQL映射

// 另外字段映射...

测试实现

public class EmployeeServiceImpl implements EmployeeService {    @Autowired    private EmployeeMapper employeeMapper;    public List
findEmp() { List
list = employeeMapper.selectAll(); return list; }}

前台展示

HTML代码

JavaScript

function getData() {    $('#dg').datagrid({        url: '${pageContext.request.contextPath}/findEmployees',        title: '员工列表',        border: false,        rownumbers: true,        pagination: true,        pageSize: 10,        columns: [            {                field: 'id',                title: '选择',                value: 'number',                checkbox: true,                width: 50            },            {                field: 'name',                title: '姓名',                width: 80            },            {                field: 'deptName',                title: '所属部门',                width: 80,                formatter: function(value, row, index) {                    return row.dept.name;                }            },            // 其他字段映射...        ]    });}

以上方案通过合理设计数据库映射、优化数据查询逻辑,实现了部门、职位与员工的三表联合查询,确保数据关联准确,性能优化。

转载地址:http://ztuhz.baihongyu.com/

你可能感兴趣的文章
OpenCV与AI深度学习 | 实战 | OpenCV传统方法实现密集圆形分割与计数(详细步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)
查看>>
OpenCV与AI深度学习 | 实战 | 使用OpenCV和Streamlit搭建虚拟化妆应用程序(附源码)
查看>>
OpenCV与AI深度学习 | 实战 | 使用OpenCV确定对象的方向(附源码)
查看>>
OpenCV与AI深度学习 | 实战 | 使用YOLOv8 Pose实现瑜伽姿势识别
查看>>
OpenCV与AI深度学习 | 实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)
查看>>
OpenCV与AI深度学习 | 实战 | 使用姿态估计算法构建简单的健身训练辅助应用程序
查看>>
OpenCV与AI深度学习 | 实战 | 基于OpenCV和K-Means聚类实现颜色分割(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YoloV5和Mask RCNN实现汽车表面划痕检测(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 实战 | 文本图片去水印--同时保持文本原始色彩(附源码)
查看>>
OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
查看>>
OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
查看>>
OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
查看>>
OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
查看>>
OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 水下检测+扩散模型:或成明年CVPR最大惊喜!
查看>>