部门修改功能

部门修改功能

2026年5月21日·#javawebai/后端基础SpringBoot/MyBatis/Java/路径参数/PathVariable/RequestMapping/Tlias·611 字 3 分钟
浏览量加载中...
AI 摘要- DeepSeek

SpringBoot 实现部门修改功能,含查询回显、路径参数接收与@RequestMapping路径抽取

部门修改功能#

定义#

部门修改功能分为两个步骤:查询回显和修改数据。查询回显根据 ID 获取部门数据用于页面展示,修改数据接收 JSON 请求体更新数据库记录。涉及路径参数接收(@PathVariable)和 @RequestMapping 路径抽取。

查询回显#

接口描述#

  • 请求方式:GET
  • 请求路径:/depts/{id}
  • 请求参数:路径参数 id
  • 响应数据:Result(data 为 Dept 对象)

实现思路#

查询回显三层架构

路径参数接收#

/depts/1、/depts/2 这种在 URL 中传递的参数称为路径参数。使用 @PathVariable 注解获取:

路径参数接收

路径参数名与 Controller 方法形参名称一致时,@PathVariable 的 value 属性可省略。

代码实现#

// Controller
@GetMapping("/depts/{id}")
public Result getById(@PathVariable Integer id) {
System.out.println("根据ID查询, id=" + id);
Dept dept = deptService.getById(id);
return Result.success(dept);
}
// Service
Dept getById(Integer id);
// ServiceImpl
public Dept getById(Integer id) {
return deptMapper.getById(id);
}
// Mapper
@Select("select id, name, create_time, update_time from dept where id = #{id}")
Dept getById(Integer id);

修改数据#

接口描述#

  • 请求方式:PUT
  • 请求路径:/depts
  • 请求参数:JSON 格式 {"id":1, "name":"研发部"}
  • 响应数据:Result

实现思路#

修改数据三层架构

代码实现#

// Controller
@PutMapping("/depts")
public Result update(@RequestBody Dept dept) {
System.out.println("修改部门, dept=" + dept);
deptService.update(dept);
return Result.success();
}
// Service
void update(Dept dept);
// ServiceImpl
public void update(Dept dept) {
dept.setUpdateTime(LocalDateTime.now()); // 补全更新时间
deptMapper.update(dept);
}
// Mapper
@Update("update dept set name = #{name}, update_time = #{updateTime} where id = #{id}")
void update(Dept dept);

@RequestMapping 路径抽取#

部门相关接口请求路径都以 /depts 开头。可将公共路径抽取到类上:

@Slf4j
@RequestMapping("/depts")
@RestController
public class DeptController {
@GetMapping // → /depts (GET)
public Result list() { ... }
@DeleteMapping // → /depts (DELETE)
public Result delete(Integer id) { ... }
@PostMapping // → /depts (POST)
public Result save(@RequestBody Dept dept) { ... }
@GetMapping("/{id}") // → /depts/{id} (GET)
public Result getById(@PathVariable Integer id) { ... }
@PutMapping // → /depts (PUT)
public Result update(@RequestBody Dept dept) { ... }
}

完整请求路径 = 类上的 @RequestMapping 的 value + 方法上的映射注解的 value。

常见场景#

  • 编辑表单的”回显-修改-保存”两阶段交互
  • RESTful 风格中 PUT + 路径参数的组合使用
  • 同类接口的公共路径抽取,减少重复代码

注意事项#

  • 路径参数名与形参名一致时可省略 @PathVariable 的 value
  • @RequestBody 用于接收 JSON 请求体,@PathVariable 用于接收 URL 路径参数
  • 修改操作每次都应更新 updateTime 字段
  • 抽取公共路径到类上后,方法上的路径只需写差异部分

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# AI绘图1# AI辅助开发2# Ajax7# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc4# CSS10# DeepSeek6# deepseek2# DELETE1# Docker5# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML9# HTTP10# ImageManager1# Java23# java13# JavaScript11# JavaWeb113# JDBC7# JSON2# JUnit1# LangChain25# Linux4# Logback1# Maven17# Muse Spark1# Mybatis1# MyBatis18# MySQL45# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python70# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot37# SpringMVC5# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue20# Waline3# Web3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端52# 动态1# 动漫1# 包1# 单词2# 博客8# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 后端48# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 实战4# 对象1# 导航栏1# 工具2# 布局2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程2# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常95# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试3# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 表单1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部署11# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 项目实战11# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]