[快乐学坊management_1] With Cursor | Mysql设计 | 服务接口设计与开发

目录

数据库设计流程

三张表

测试

接口设计

部门管理接口文档

1. 查询所有部门

2. 新增部门

⭕3. 根据ID查询部门

4. 修改部门

5. 删除部门

(部门分页条件查询)

错误响应示例

接口设计规范

服务端开发

接口开发


数据库设计流程

  • 01 明确业务需求
    • 依据:页面原型+需求文档
    • 目标:确定数据主体/表
  • 02 确定数据关联
    • 关联类型:一对一、一对多、多对多
  • 03 确定字段详情
    • 包括字段、类型、约束
  • 04 构建表结构
    • 目标:建库建表

表结构 参考:


三张表

  • 部门表
  • 员工表
  • 员工详细信息表
  1. dept(部门表)
    • 字段:部门 ID、名称、创建/更新时间
    • 数据示例:学工部、教研部、咨询部等
  1. emp(员工表)
    • 字段:员工 ID、账号、密码、姓名、性别、手机号、职位、薪资等
    • 职位类型:班主任、讲师、学生管理员、教研管理员、咨询师
  1. emp_expr(员工履历表)
    • 字段:履历 ID、员工 ID、起止时间、公司名称、职位

建表

CREATE DATABASE `klxf`;
USE `klxf`;CREATE TABLE `dept` (`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID, 主键',`name` varchar(10) NOT NULL COMMENT '部门名称',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='部门表';CREATE TABLE `emp` (`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID,主键',`username` varchar(20) NOT NULL COMMENT '用户名',`password` varchar(50) DEFAULT '123456' COMMENT '密码',`name` varchar(10) NOT NULL COMMENT '姓名',`gender` tinyint unsigned NOT NULL COMMENT '性别, 1:男, 2:女',`phone` char(11) NOT NULL COMMENT '手机号码',`job` tinyint unsigned DEFAULT NULL COMMENT '职位, 1 班主任, 2 讲师 , 3 学工主管, 4 教研主管, 5 辅导员',`salary` int unsigned DEFAULT NULL COMMENT '薪资',`image` varchar(300) DEFAULT NULL COMMENT '头像',`entry_date` date DEFAULT NULL COMMENT '入职日期',`dept_id` int unsigned DEFAULT NULL COMMENT '部门ID',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`),UNIQUE KEY `phone` (`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表';CREATE TABLE `emp_expr` (`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID, 主键',`emp_id` int unsigned DEFAULT NULL COMMENT '员工ID',`begin` date DEFAULT NULL COMMENT '开始时间',`end` date DEFAULT NULL COMMENT '结束时间',`company` varchar(50) DEFAULT NULL COMMENT '公司名称',`job` varchar(50) DEFAULT NULL COMMENT '职位',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='工作经历';

借助 AI 生成测试数据:

INSERT INTO `dept` (`name`, `create_time`, `update_time`) VALUES
('教务处', NOW(), NOW()),
('财务部', NOW(), NOW()),
('招生办', NOW(), NOW()),
('后勤部', NOW(), NOW()),
('技术部', NOW(), NOW()),
('市场部', NOW(), NOW()),
('研发中心', NOW(), NOW()),
('国际部', NOW(), NOW()),
('培训部', NOW(), NOW()),
('质量部', NOW(), NOW()),
('法务部', NOW(), NOW()),
('公关部', NOW(), NOW()),
('审计部', NOW(), NOW()),
('战略部', NOW(), NOW()),
('校友会', NOW(), NOW());INSERT INTO `emp` (`username`, `password`, `name`, `gender`, `phone`, `job`, `salary`, `entry_date`, `dept_id`, `create_time`, `update_time`) VALUES
('zhangsan', '123456', '张三', 1, '13800138001', 2, 15000, '2020-03-15', 1, NOW(), NOW()),
('lisi', '123456', '李思', 2, '13900239002', 1, 8000, '2021-06-20', 2, NOW(), NOW()),
('wangwu', '123456', '王武', 1, '13600336003', 3, 12000, '2019-11-05', 3, NOW(), NOW()),
('zhaoliu', '123456', '赵柳', 2, '13500445004', 4, 18000, '2022-08-12', 4, NOW(), NOW()),
('sunqi', '123456', '孙琦', 1, '13700557005', 5, 9500, '2023-01-30', 5, NOW(), NOW()),
('zhouba', '123456', '周巴', 1, '13300663006', 2, 16000, '2020-09-18', 6, NOW(), NOW()),
('wujiu', '123456', '吴玖', 2, '13200772007', 1, 8500, '2021-04-22', 7, NOW(), NOW()),
('zhengshi', '123456', '郑石', 1, '13100881008', 3, 13000, '2018-07-14', 8, NOW(), NOW()),
('fengshisan', '123456', '冯十三', 2, '15900999009', 4, 20000, '2022-05-09', 9, NOW(), NOW()),
('cheneryi', '123456', '陈二一', 1, '15801010010', 5, 10000, '2023-03-01', 10, NOW(), NOW()),
('huxiaoxiao', '123456', '胡笑笑', 2, '15701111011', 2, 14500, '2020-12-25', 11, NOW(), NOW()),
('linmengmeng', '123456', '林萌萌', 2, '15601212012', 1, 7800, '2021-08-07', 12, NOW(), NOW()),
('maweiwei', '123456', '马威威', 1, '15501313013', 3, 12500, '2019-02-28', 13, NOW(), NOW()),
('huangdaye', '123456', '黄大业', 1, '15301414014', 4, 19000, '2022-10-11', 14, NOW(), NOW()),
('caoxiaoyu', '123456', '曹小雨', 2, '15201515015', 5, 8800, '2023-06-19', 15, NOW(), NOW());INSERT INTO `emp_expr` (`emp_id`, `begin`, `end`, `company`, `job`) VALUES
(1, '2018-03-01', '2020-02-28', '腾讯科技', 'Java开发工程师'),
(2, '2019-05-10', '2021-04-15', '阿里巴巴', '班主任'),
(3, '2017-08-20', '2019-07-25', '字节跳动', '学生管理专员'),
(4, '2020-11-01', '2022-10-31', '华为技术', '教研主管'),
(5, '2021-02-14', '2023-01-30', '百度网络', '辅导员'),
(6, '2016-09-05', '2018-08-10', '京东集团', '前端讲师'),
(7, '2020-07-22', '2022-06-18', '美团点评', '班主任'),
(8, '2018-04-12', '2020-03-20', '滴滴出行', '学工主管'),
(9, '2019-10-05', '2021-09-15', '小米科技', '教研总监'),
(10, '2022-01-08', '2023-12-01', '拼多多', '职业规划师'),
(11, '2017-12-15', '2019-11-30', '网易云音乐', '全栈讲师'),
(12, '2021-03-10', '2023-02-28', '携程旅行', '班主任'),
(13, '2019-06-20', '2021-05-25', '新浪微博', '学生事务经理'),
(14, '2020-08-01', '2022-07-31', '快手科技', '课程研发主管'),
(15, '2022-04-18', '2024-03-15', 'B站', '心理咨询师');

测试

datagrip

测试表结构

测试数据


接口设计

(AI 辅助)

根据部门管理需求及 RESTful 设计规范编写,以部门管理的接口文档为例

部门管理接口文档


1. 查询所有部门

基本信息
请求路径:/depts
请求方式:GET
接口描述:获取所有部门列表(按最后更新时间倒序排列)

请求参数

响应数据

{"code": 1,"msg": "success","data": [{"id": 1,"name": "学工部","createTime": "2023-09-25T09:47:40","updateTime": "2024-08-24T16:54:35"},{"id": 2,"name": "教研部","createTime": "2023-09-25T09:47:40","updateTime": "2024-08-09T15:17:04"}]
}

2. 新增部门
  • 基本信息
    请求路径:/depts
    请求方式:POST
    接口描述:创建新部门

请求参数(JSON Body)

参数名

类型

是否必须

示例

备注

name

string

招生办

部门名称(2-10位)

请求示例

{"name": "招生办"
}

响应数据

{"code": 1,"msg": "success","data": null
}

⭕3. 根据ID查询部门
  • 基本信息
    请求路径:/depts/{id}
    请求方式:GET
    接口描述:通过部门ID获取详细信息

请求参数(路径参数)

参数名

类型

是否必须

示例

备注

id

int

1

部门ID

请求示例

GET /depts/1

响应数据

{"code": 1,"msg": "success","data": {"id": 1,"name": "学工部","createTime": "2023-09-25T09:47:40","updateTime": "2024-08-24T16:54:35"}
}

4. 修改部门

基本信息
请求路径:/depts
请求方式:PUT
接口描述:更新部门信息

请求参数(JSON Body)

参数名

类型

是否必须

示例

备注

id

int

1

部门ID

name

string

学生工作部

部门名称(2-10位)

请求示例

{"id": 1,"name": "学生工作部"
}

响应数据

{"code": 1,"msg": "success","data": null
}

5. 删除部门

基本信息
请求路径:/depts/{id}
请求方式:DELETE
接口描述:根据ID删除部门

请求参数(路径参数)

参数名

类型

是否必须

示例

备注

id

int

3

部门ID(关联员工时不可删除)

请求示例

DELETE /depts/3

响应数据

{"code": 1,"msg": "success","data": null
}

(部门分页条件查询)

基本信息
请求路径:/depts
请求方式:GET
接口描述:根据名称模糊查询部门并分页

请求参数

参数名

类型

是否必须

示例

备注

name

string

教研

部门名称模糊查询

page

int

1

页码(默认1)

pageSize

int

10

每页条数(默认10)

请求示例

GET /depts?name=教&page=1&pageSize=5

响应数据

{"code": 1,"msg": "success","data": {"total": 8,"rows": [{"id": 2,"name": "教研部","createTime": "2023-09-25T09:47:40","updateTime": "2024-08-09T15:17:04"}]}
}

错误响应示例

{"code": 0,"msg": "部门名称已存在","data": null
}

接口设计规范

  1. URL规范
    • 资源使用复数名词:/depts
    • 层级资源:/depts/{id}/employees(如需子资源)
  1. HTTP方法

方法

用途

GET

查询

POST

新增

PUT

全量更新

DELETE

删除

  1. 状态码

状态码

说明

200

成功

400

参数错误

404

资源不存在

409

数据冲突

500

服务器内部错误


服务端开发

(SpringBoot+MyBatis)

借助 cursor 生成框架后,对 springboot 进行一下测试:

浏览器查看:


接口开发

  • 部门管理
  • 员工管理
  • 文件上传
  • 登录认证

(AI 辅助)项目特点:

  1. 使用 Lombok 简化实体类的编写
  2. 统一的返回结果封装(Result类)
  3. 采用 RESTful 风格的 API 设计
  4. 使用 MyBatis 进行数据库操作
  5. 实现基础的 CRUD 功能

再次启动:

下一步:借助 Apifox 来进行 接口测试,下篇文章见~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35832.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用插件推荐 -------- 一个可以将任意语言(python、C/C++、go、java等)的程序转换为汇编语言的小插件

链接为: Compiler Explorer 界面: 参考自:如何获取虚函数表及内存分析_com的虚函数表怎么寻找-CSDN博客

vue学习八

十七 组件通信方式 1 props 父传子 //父组件 <script setup>//book来源省略import Subview1 from ./Subview1.vue;function updatebook(updatetimes){book.value.updatetimes updatetimes} </script> <template><Subview1 :book"book" :upd…

51单片机的寻址方式(完整)

目录 一、立即数寻址 二、直接寻址 三、寄存器寻址 四、寄存器间接寻址 五、变址寻址 六、位寻址 七、指令寻址 &#xff08;一&#xff09;绝对寻址 &#xff08;二&#xff09;相对寻址 在 51 单片机中&#xff0c;寻址方式是指在执行指令时&#xff0c;CPU 寻找操作…

每日一题:动态规划

如题&#xff08;基础题&#xff09;&#xff1a; 经典的爬楼梯问题&#xff0c;先从递归想起&#xff1b; class Solution { public:int climbStairs(int n) {if(n1)return 1;if(n2)return 2;return climbStairs(n-1)climbStairs(n-2);} }; 之后可以想办法&#xff08;如哈希…

【论文阅读】FairCLIP - 医疗视觉语言学习中的公平性提升

FairCLIP - 医疗视觉语言学习中的公平性提升 1.研究背景与动机2.核心贡献3.方法论细节4.实验结果与洞见5.总结 FairCLIP: Harnessing Fairness in Vision-Language Learning FairCLIP - 医疗视觉语言学习中的公平性提升 Accepted by CVPR2024 github:链接 1.研究背景与动机…

Linux 入门:权限的认识和学习

目录 一.shell命令以及运行原理 二.Linux权限的概念 1.Linux下两种用户 cannot open directory .: Permission denied 问题 2.Linux权限管理 1).是什么 2).为什么&#xff08;权限角色目标权限属性&#xff09; 3).文件访问者的分类&#xff08;角色&#xff09; 4).文…

大语言模型的压缩技术

尽管人们对越来越大的语言模型一直很感兴趣&#xff0c;但MistralAI 向我们表明&#xff0c;规模只是相对而言的&#xff0c;而对边缘计算日益增长的兴趣促使我们使用小型语言获得不错的结果。压缩技术提供了一种替代方法。在本文中&#xff0c;我将解释这些技术&#xff0c;并…

Java高频面试之集合-14

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;为什么 HashMap 的容量是 2 的倍数呢&#xff1f; HashMap的容量被设计为2的幂次&#xff0c;主要基于以下原因&#xff…

TreelabPLMSCM数字化供应链解决方案0608(61页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 资料解读&#xff1a;TreelabPLMSCM 数字化供应链解决方案 0608 在当今快速变化的市场环境中&#xff0c;企业面临着诸多挑战&#xff0c;Treelab 数智化 PLM_SCM 行业解决方案应运而生。该方案聚焦市场趋势与行业现状&#xff0c;致力于解…

Docker搭建MySQL主从服务器

一、在主机上创建MySQL配置文件——my.cnf master服务器配置文件路径&#xff1a;/data/docker/containers/mysql-cluster-master/conf.d/my.cnf slave服务器配置文件路径&#xff1a; /data/docker/containers/mysql-cluster-master/conf.d/my.cnf master服务配置文件内容 …

JS逆向案例-HIKVISION-视频监控的前端密码加密分析

免责声明 本文仅为技术研究与渗透测试思路分享,旨在帮助安全从业人员更好地理解相关技术原理和防御措施。任何个人或组织不得利用本文内容从事非法活动或攻击他人系统。 如果任何人因违反法律法规或不当使用本文内容而导致任何法律后果,本文作者概不负责。 请务必遵守法律…

SENT接口

文章目录 前言SENT接口简介物理层数据链路层编码方式帧结构消息格式短串行消息格式增强型串行消息格式 CRC校验和CRC4CRC6 错误检测机制 IP 设计结构框图接口设计上板验证 前言 本文参考标准《SAE J2716_201604》。 SENT接口 简介 SENT&#xff08;Single Edge Nibble Tran…

Qt-搭建开发环境

1.环境搭建 开发工具概述&#xff1a; Qt ⽀持多种开发⼯具&#xff0c;其中⽐较常⽤的开发⼯具有&#xff1a;Qt Creator、Visual Studio、Eclipse. 1.1Qt Creator Qt Creator 是⼀个轻量级的跨平台集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为使⽤ Qt 框架进…

Odoo18 Http鉴权+调用后端接口

最近在调研Odoo18&#xff0c;包括它的前后端原理、源码等。发现官方的开发文档并不十分实用&#xff0c;比如标题这种简单的实用需求&#xff0c;竟然浪费了一点时间&#xff0c;特此记录。 官方文档&#xff1a;External API — Odoo 18.0 documentation 前提&#xff1a;首…

【第13节】windows sdk编程:GDI编程

目录 一、GDI 概述 二、设备环境概念 三、使用 GDI 绘图对象 四、使用 GDI 坐标系统 五、使用GDI绘图 5.1 输出文字 5.2 画点和线 5.3 画矩形框、圆和多边形 5.4 画位图和图标 5.5 双缓冲技术 六、综合代码示例 一、GDI 概述 Windows 应用程序不支持标准输出函数&am…

离开页面取消请求

前言 上一篇文章我们处理了axios的重复请求问题axios重复请求&#xff0c;今天来说一下如何在离开某个页面的时候将正在发送的请求取消掉 开始 基于上一篇的axios封装&#xff0c;当我们在编写某个页面的请求的时候 import request from /request/index;export const test2…

C++输入输出流第一弹:标准输入输出流 详解(带测试代码)

目录 C输入输出流 流的四种状态&#xff08;重点&#xff09; 标准输入输出流 标准输入流 逗号表达式 1. 逗号表达式的基本规则 示例 2. 图片中的代码分析 关键点解析 3. 常见误区 误区 1&#xff1a;逗号表达式等同于逻辑与 && 误区 2&#xff1a;忽略输入…

Z 轴热膨胀系数:PCB 可靠性的关键因素与选材策略

在电子设备小型化与高性能化的趋势下&#xff0c;PCB&#xff08;印刷电路板&#xff09;的可靠性成为决定产品寿命的核心因素。其中&#xff0c;Z 轴热膨胀系数&#xff08;α2/z-CTE&#xff09;作为板材的关键参数&#xff0c;直接影响多层板的层间结合力、焊点稳定性及整体…

【C++】Virtual function and Polymorphism

《C程序设计基础教程》——刘厚泉&#xff0c;李政伟&#xff0c;二零一三年九月版&#xff0c;学习笔记 文章目录 1、多态性的概念2、虚函数的定义2.1、引入虚函数的原因2.2、虚函数的定义与使用2.3、虚函数的限制 3、抽象类3.1、纯虚函数3.2、抽象类 4、应用实例 更多有趣的代…

图解LLM智能体(LLM Agents):构建与运作机制的全面解析

LLM智能体:构建与运作机制 LLM智能体(LLM Agents)正在迅速普及,似乎逐渐取代了我们熟悉的传统对话式LLM。这些令人惊叹的能力并非凭空而来,而是需要多个组件协同工作。 本文包含超过60张定制插图,将深入探讨LLM智能体的领域、其核心组件以及多智能体框架的工作原理。 文…