Spring MVC RESTful API - 修改状态接口示例

news/2024/9/18 23:14:57/ 标签: spring, mvc, restful

前言

在许多应用程序中,更新资源的状态是一项常见的需求。例如,在任务管理系统中,用户可能需要更新任务的状态,如从“待办”变为“完成”。为了实现这一功能,我们可以使用Spring MVC框架结合MyBatis Plus来创建一个简单的RESTful API接口。下面,我们将逐步介绍如何实现这一功能。

2. 项目结构

我们的项目将分为几个主要部分:

  • Controller - 处理HTTP请求的控制器。
  • Service - 包含业务逻辑的服务层。
  • Mapper - 数据访问对象层,使用MyBatis Plus进行数据库操作。
  • Entity - 映射数据库表的实体类。

3. 创建项目

假设你已经有一个Spring Boot项目,我们将在此基础上添加MyBatis Plus的支持。

3.1 添加依赖

首先,在pom.xml中添加MyBatis Plus的依赖:

<dependencies><!-- Spring Boot Web Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MyBatis Plus Starter --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>最新版本</version></dependency><!-- MySQL Driver --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Spring Boot DevTools for hot-reloading --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency>
</dependencies>

请将最新版本替换为实际的版本号,可以在MyBatis Plus GitHub页面查看。

3.2 配置数据库

application.properties中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

确保MySQL服务已启动,并且数据库your_database存在。

4. 实体类

定义一个实体类Task来映射数据库表:

package com.example.demo.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;@TableName("tasks")
public class Task {@TableId(value = "id", type = IdType.AUTO)private Long id;private Integer status;// Getters and Setters
}

5. Mapper接口

定义一个TaskMapper接口继承自BaseMapper<Task>

package com.example.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.Task;public interface TaskMapper extends BaseMapper<Task> {
}

6. Service接口与实现

定义一个TaskService接口:

package com.example.demo.service;import com.example.demo.entity.Task;public interface TaskService {boolean updateStatus(Long taskId, Integer status);
}

实现TaskService接口:

package com.example.demo.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.entity.Task;
import com.example.demo.mapper.TaskMapper;
import com.example.demo.service.TaskService;
import org.springframework.stereotype.Service;@Service
public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements TaskService {@Overridepublic boolean updateStatus(Long taskId, Integer status) {QueryWrapper<Task> queryWrapper = new QueryWrapper<>();queryWrapper.eq("id", taskId);int rows = this.update(new Task().setStatus(status), queryWrapper);return rows > 0;}
}

7. Controller

创建一个TaskController来处理HTTP请求:

package com.example.demo.controller;import org.springframework.web.bind.annotation.*;import com.example.demo.service.TaskService;@RestController
@RequestMapping("/tasks")
public class TaskController {private final TaskService taskService;public TaskController(TaskService taskService) {this.taskService = taskService;}@PutMapping("/{taskId}/status")public ResponseEntity<String> updateStatus(@PathVariable("taskId") Long taskId,@RequestParam("status") Integer status) {boolean result = taskService.updateStatus(taskId, status);if (result) {return ResponseEntity.ok("Status updated successfully.");} else {return ResponseEntity.badRequest().body("Failed to update status.");}}
}

8. 测试

你可以使用Postman或类似的工具发送一个PUT请求到http://localhost:8080/tasks/{taskId}/status?status={newStatus}来测试这个API接口是否按预期工作。

9. 结论

通过以上步骤,我们成功地使用Spring MVC结合MyBatis Plus实现了一个用于更新任务状态的RESTful API接口。一个简单的修改状态接口示例,记录-ing~~


http://www.ppmy.cn/news/1519208.html

相关文章

《第三十章 性能优化 - 存储优化》

一、引言 在 Android 应用开发中&#xff0c;性能优化是一个持续且重要的工作。存储优化作为性能优化的关键环节之一&#xff0c;对于提高应用的响应速度、节省资源以及提升用户体验具有重要意义。在本章中&#xff0c;我们将重点探讨数据库优化和缓存策略这两个主要知识点。 二…

go+gin+vue入门

后端框架 1、安装go、goland 2、创建空项目 3、下载要用的包&#xff1a;命令行输入go get -u github.com/xxxx 4、安装mysql数据库&#xff0c;使用navicat创建数据库。 5、按照项目框架搭建目录、文件、代码&#xff1a;如router、model… 6、运行测试&#xff0c;go run ma…

JVM面试(一)什么是虚拟机?什么是class文件?

什么是java虚拟机&#xff1f; 如果通俗点来讲&#xff0c;我们在电脑上一行行敲出来的代码&#xff0c;电脑本身是不认识的&#xff0c;最终是要转成电脑可以运行的101001这种字节。 但是这些我们又不可能手动来转换&#xff0c;所以呢&#xff0c;就需要一个工具&#xff0…

学习笔记——后端项目中的相关技术 【随时更新】

文章目录 1. Session 共享1.0 cookie和session的工作流1.1 Cookie范围1.2 为什么要共享&#xff1f;1.3 如何共享存储1.4 session共享实现 2. 缓存的实现2.1 缓存分类2. 2 Redis 缓存实现2.1.1 Redis 的数据结构&#xff08;高频考点&#xff09;2.1.2 redisTemplate 自定义序列…

【Linux】CodeServer:离线插件配置

下载 VS Code 插件 要为 code-server 添加离线插件&#xff0c;首先需要从 Visual Studio Code 插件市场下载所需的插件&#xff1a; 打开浏览器&#xff0c;访问 Visual Studio Code 插件市场。 在搜索栏中输入您需要的插件名称&#xff0c;找到插件后&#xff0c;点击插件页…

“线程池中线程异常后:销毁还是复用?”

目录 一、验证execute提交线程池中 测试 结论 二、验证submit提交线程池中 测试 结论 三、源码解析 查看submit方法的执行逻辑 查看execute方法的执行逻辑 为什么submit方法&#xff0c;没有创建新的线程&#xff0c;而是继续复用原线程&#xff1f; 四、总结 需要说…

经典大语言模型解读(2):生成式预训练的先锋GPT-1

论文地址&#xff1a;Improving Language Understanding by Generative Pre-Training 概述 现实世界中包含了大量的文本语料数据&#xff0c;然而&#xff0c;绝大多数语料都是无标签的。 为了充分利用这些无标签语料库&#xff0c;GPT1.0提出直接利用这些未标记的语料来进行…

VMware Workstation安装及配置CentOS7 Linux操作系统

VMware workstation安装 百度网盘&#xff0c;VMware-workstation-full-17.5.2.exe 安装包&#xff1a; 链接:https://pan.baidu.com/s/1xgbWUlo-hFUbb11MRxIVsw?pwd87bq 提取码: 87bq 检查网络适配器是否正常配置 在VMware Workstation中安装CentOS7 Linux操作系统 下载…

探秘Python字典:解锁数据管理的艺术

引言 字典&#xff08;Dictionary&#xff09;是一种可变容器模型&#xff0c;它可以存储任意类型对象。Python字典使用键-值对&#xff08;key-value pair&#xff09;存储数据&#xff0c;其中键必须是不可变的数据类型如数字、字符串等&#xff0c;而值可以是任何数据类型。…

花店鲜花管理与推荐系统+Python+Django网页界面+管理系统+计算机课设

一、介绍 花店鲜花管理与推荐系统。本系统使用Python作为主要开发语言开发的一个花店鲜花管理与推荐的网站平台。 网站前端界面采用HTML、CSS、BootStrap等技术搭建界面。后端采用Django框架处理用户的逻辑请求&#xff0c;并将用户的相关行为数据保存在数据库中。通过Ajax技…

泰山派的小手机后续(2)

之前 触摸板一直报错的解决&#xff1a; 1 我的触摸板 画错了。 从新画了一个 触摸的转接板&#xff0c;调整过来了。 关于触摸的 线序。 这块屏幕正常 就是横着放的。 关于泰山派接口的线序&#xff1a; 所以我的转接板的画法 是&#xff1a; 开发板与转接板 使用的是 反排线…

AWS 无服务计算服务 Lambda

无服务计算服务 Lambda 引言什么是 AWS Lambda关键特点使用场景 SQS 驱动 Lambda示例场景描述&#xff1a;订单处理系统解决方案&#xff1a;使用 SQS 和 Lambda示例代码&#xff1a;Python Lambda 处理 SQS 消息总结 Lambda ApplicationLambda Application 的主要组成部分创建…

“北京地铁系统中人脸识别技术的安全与效率问题研究”

关于“北京地铁系统中人脸识别技术的安全与效率问题研究”&#xff0c;可以从以下几个方面进行详细分析&#xff1a; 一、人脸识别技术在北京地铁系统中的应用 1. 安检系统 应用背景&#xff1a;为了提升地铁进站安检速度&#xff0c;减少乘客等候时间&#xff0c;北京地铁系…

深度学习速通系列:线性回归vs逻辑回归

线性回归和逻辑回归是两种常用的统计学方法&#xff0c;它们在数据分析和机器学习中扮演着重要的角色。下面是对这两种回归方法的基本介绍&#xff1a; 线性回归&#xff08;Linear Regression&#xff09;&#xff1a; 线性回归是一种预测分析方法&#xff0c;用于建模和分析…

基于单片机的无线空气质量检测系统设计

本设计以STC89C52单片机为核心&#xff0c;其中包含了温湿度检测模块、光照检测模块、PM2.5检测模块、报警电路、LCD显示屏显示电路、按键输入模块和无线传输模块来完成工作。首先&#xff0c;系统可以通过按键输入模块设置当前的时间和报警值&#xff1b;使用检测模块检测当前…

Java中的事件驱动架构(EDA)

引言 在现代软件开发中&#xff0c;事件驱动架构&#xff08;Event-Driven Architecture, EDA&#xff09;越来越受到青睐。EDA是一种软件架构范式&#xff0c;它通过生成、捕获和反应事件来驱动系统行为。在大型分布式系统中&#xff0c;EDA能够帮助我们提高系统的可扩展性、…

Golang 教程6——数组

Golang 教程6——数组 注意&#xff0c;该文档只适合有编程基础的同学&#xff0c;这里的go教程只给出有区别的知识点 1、赋值 1.1 main文件 func main() {//赋值方式1var arr [5] intarr[0] 1arr[1] 2arr[2] 3arr[3] 4arr[4] 5fmt.Println(arr)//赋值方式2var arr2 …

spring security 记住我在web和前后端分离如何使用

一、传统web开发准备工作 如果不懂原理的话&#xff0c;去看上一篇文章&#xff1a;CSDNhttps://mp.csdn.net/mp_blog/creation/editor/141716695 导入需要的依赖包&#xff0c;在传统web页面开发比较简单&#xff0c;我们设置只需要在页面请求参数加上一个remember-me 即可&a…

VS实用的调试技巧

目录 前言 一、是什么bug&#xff1f; 二、什么是调试(Debug) 三、Debug和Release 四、VS调试快捷键 4.1 环境准备 4.2 调试快捷键 五、监视和内存观察 5.1 监视 5.2 内存 六、举例 6.1 例一 6.2 例二 七、数组传参小技巧 八、编程常见错误归类 1. 编译型错误 …

【设计模式-职责链】

定义 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它避免请求的发送者与接收者耦合在一起&#xff0c;让多个对象都有机会处理这个请求。将这些对象连成一条链&#xff0c;并沿着这条链传递请求&#xff0c;直到有对象…