博客
关于我
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/

你可能感兴趣的文章
Python3 A*寻路算法实现
查看>>
python3 grpc安装
查看>>
python3 mysql 封装多表_python3 mysql-多表查询
查看>>
python3 mysql8_Python MySQL8.0 错误:authentication plugin 'calling_sha2_password' is not supported....
查看>>
Python关键代码总览!从Zero到Hero必看的考点
查看>>
python3 robotframework+pycharm框架搭建
查看>>
Python3 shutil模块
查看>>
Python关于strftime函数详细解析 附实战代码
查看>>
Python3 tutorial day3
查看>>
python3 week4
查看>>
Python3 创建数组
查看>>
python3 套接字异常(a byte-like object is required not str)
查看>>
python3 实现用户三次输入错误记录黑名单并对该用户登录锁定-day1
查看>>
python3 文本变图片
查看>>
Python3 查看 com 组件的属性
查看>>
python3 案例分享--发邮件
查看>>
python3 模板库_Python3 标准库概览_Python教程_我爱模板网 - 提供下载各种免费建站资源,免费网站模板,免费网页特效,让你爱上建站!...
查看>>
Python3 求最大/小值及索引值 Numpy
查看>>
python3+django使用celery执行某些任务失败的解决方案
查看>>
Python3+Requests+Unittest实战系列【一】
查看>>