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

你可能感兴趣的文章
OSPF 支持的网络类型:广播、NBMA、P2MP和P2P类型
查看>>
OSPF 概念型问题
查看>>
OSPF 的主要目的是什么?
查看>>
OSPF5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文
查看>>
SQL Server 存储过程分页。
查看>>
OSPFv3:第三版OSPF除了支持IPv6,还有这些强大的特性!
查看>>
OSPF不能发现其他区域路由时,该怎么办?
查看>>
OSPF两个版本:OSPFv3与OSPFv2到底有啥区别?
查看>>
SQL Server 存储过程
查看>>
OSPF在什么情况下会进行Router ID的重新选取?
查看>>
OSPF在大型网络中的应用:高效路由与可扩展性
查看>>
OSPF太难了,这份OSPF综合实验请每位网络工程师查收,周末弯道超车!
查看>>
OSPF技术入门(第三十四课)
查看>>
OSPF技术连载10:OSPF 缺省路由
查看>>
OSPF技术连载11:OSPF 8种 LSA 类型,6000字总结!
查看>>
OSPF技术连载12:OSPF LSA泛洪——维护网络拓扑的关键
查看>>
OSPF技术连载13:OSPF Hello 间隔和 Dead 间隔
查看>>
OSPF技术连载14:OSPF路由器唯一标识符——Router ID
查看>>
OSPF技术连载15:OSPF 数据包的类型、格式和邻居发现的过程
查看>>
OSPF技术连载16:DR和BDR选举机制,一篇文章搞定!
查看>>