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

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

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

前言

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


需求分析

关系类型

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

关系特点

  • 在“多”这一方表中,默认包含了“一”方表的主键对应字段,例如:
    • 员工表包含 dept_id 和 job_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/

你可能感兴趣的文章
Python FileDialog获取文件夹路径不是文件
查看>>
python filter过滤器的使用_python基础知识分享:zip()、filter函数和reduce如何使用?...
查看>>
python flask 请求code 400, message Bad request version
查看>>
Python UI自动化测试集成UnitTest
查看>>
Python UTC 日期时间对象的 ISO 格式不包括 Z(祖鲁语或零偏移)
查看>>
python valueerror object2_python遇到错误记录
查看>>
python vars的作用
查看>>
Python virtualenv
查看>>
python vue3实现大文件分段续传(断点续传)--带暂停和继续功能
查看>>
Python WebDriver如何打印整个页面源(html)
查看>>
Python WebSocket自动化测试:构建高效接口测试框架
查看>>
Python Web开发
查看>>
Redis 配置文件杂项。
查看>>
Python web自动化测试 —— 文件上传
查看>>
Python web自动化测试 —— 文件上传!
查看>>
Python Web自动化测试开发环境搭建(附安装包与虚拟机环境)
查看>>
python win32api键盘_Python win32api.keybd_event模拟键盘输入
查看>>
python Windows显示当前鼠标坐标
查看>>
python Workbook 表格宽度
查看>>
python | ggplot,一个超强的 Python 库!
查看>>