使用RESTful风格编写用户增删改查模拟操作

三种参数接收方式的区别
@RequestParam 用于接收url地址传参或表单传参
@RequestBody 用于接收json数据
@PathVariable 用于接收路径参数,使用{参数名称}描述路径参数

package com.wu.controller;import com.wu.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;@Controller
public class UserController {@RequestMapping(value = "/users", method = RequestMethod.POST)@ResponseBodypublic String save(@RequestBody User user) {System.out.println("user save ==> " + user);return "{'module':'user save'}";}@RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)@ResponseBodypublic String delete(@PathVariable Integer id) {System.out.println("user delete ==> " + id);return "{'module':'user delete'}";}@RequestMapping(value = "/users", method = RequestMethod.PUT)@ResponseBodypublic String update(@RequestBody User user) {System.out.println("user update ==> " + user);return "{'module':'user update'}";}@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)@ResponseBodypublic String getById(@PathVariable Integer id) {System.out.println("user getById ==> " + id);return "{'module':'user getById'}";}@RequestMapping(value = "/users", method = RequestMethod.GET)@ResponseBodypublic String getAll() {System.out.println("user getAll");return "{'module':'user getAll'}";}
}

以图书信息管理为例进行代码优化

@RestController注解
类型:类注解
位置:基于SpringMvc的RESTful开发控制器类定义上方
作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能

RESTful快速开发
名称:@GetMapping(GET) @PostMapping(POST) @PutMapping(PUT) @DeleteMapping(DELETE)
类型:方法注解
位置:基于SpringMVC的RESful开发控制器方法定义上方
作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作

package com.wu.controller;
import com.wu.domain.Book;
import org.springframework.web.bind.annotation.*;//@Controller
//@ResponseBody
@RestController // 将上方两个注解合二为一
@RequestMapping("/books")
public class BookController {//    @RequestMapping(method = RequestMethod.POST)@PostMappingpublic String save(@RequestBody Book book) {System.out.println("book save ==> " + book);return "{'module':'book save'}";}//    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)@DeleteMapping("/{id}")public String delete(@PathVariable Integer id) {System.out.println("book delete ==> " + id);return "{'module':'book delete'}";}//    @RequestMapping(method = RequestMethod.PUT)@PutMappingpublic String update(@RequestBody Book book) {System.out.println("book update ==> " + book);return "{'module':'book update'}";}//    @RequestMapping(value = "/{id}", method = RequestMethod.GET)@GetMapping("/{id}")public String getById(@PathVariable Integer id) {System.out.println("book getById ==> " + id);return "{'module':'book getById'}";}//    @RequestMapping(method = RequestMethod.GET)@GetMappingpublic String getAll() {System.out.println("book getAll");return "{'module':'book getAll'}";}
}

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

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

相关文章

BUFG/BUFGCE/BUFH/BUFHCE/BUFH/BUFGHCE/BUFMR/BUFMRCE/BUFR/IBUF/IBUFDS

本文对BUFG/BUFGCE/BUFH/BUFHCE简单介绍,便于后续查看。 原语的使用:在vivado中找到所要用的原语,直接将其实例化到设计中即可。 文章目录 BUFGBUFGCEBUFHBUFHCEBUFMRBUFRBUFMRCEIBUFIBUFDS 下图为 7 系列 FPGA 时钟架构图: BU…

在Linux中部署mysql并远程连接

1. 配置yum仓库 更新密钥 rpm -import https: /repo.mysql.com/RPM-GPG-KEY-mysql-2022 # 安装Mysql yum库 rpm -Uvh http: /repo.mysql.com /mysql57-community-release-el7-7.noarch.rpm 2. 使用yum安装MySQL yum -y install mysql-community-server 3. 安装完成后&#x…

redis7.0编译安装 + bash安装脚本

以下操作在debian11下演示,ubuntu通用,其它系列linux自行安装依赖,其余一样 以7.0.12版本为例进行安装 最后的bash脚本是对前面的操作的封装,一键即配置完成,即可使用 一、编译安装 1.安装依赖 apt-get install bui…

Appium+python自动化(十二)- Android UIAutomator终极定位凶器(超详解)

简介 乍眼一看,小伙伴们觉得这部分其实在异性兄弟那里就做过介绍和分享了,其实不然,上次介绍和分享的大哥是uiautomatorviewer,是一款定位工具。今天介绍的是一个java库,提供执行自动化测试的各种API。 Android团队在4…

数据结构(王道)——数据结构之 二叉树

一、数据结构之 二叉树概念: 特殊的二叉树结构: 满二叉树完全二叉树 二叉排序树 平衡二叉树 二叉树基本概念总结: 二、二叉树的常用性质: 1、【二叉树】的叶子结点比二分支结点多一个 2、【m叉树】的第i层至多有m^(i-1)个结点 3、…

关于Qt For android第一次编译时出现的问题

搞了三四天,搞的快崩溃了,问题提示为 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring root project android-build. > Could not resolve all artifacts for configuration :classpath.> Could not…

pytorch 2.0初探:和pytorch 1.13的速度对比

看到pytorch2.0出来了,而且宣传提速明显,一行代码即可提速43%左右: compiled_model torch.compile(model) We then measure speedups and validate accuracy across these models. Since speedups can be dependent on data-type, we measu…

真正的理解WPF中的TemplatedParent

童鞋们在WPF中经常看到 TemplatedParent ,或者经常看到下面的用法: {Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content} 是不是看的一脸蒙圈? 先看官方文档: 意思是 和这个控件的 模板上的 父亲,如果这个控件不是模板创建的,那么这个值就…

CSS 渐变边框及动画

转载请注明出处,点击此处 查看更多精彩内容 用 CSS 实现渐变边框及动画,下面对关键点进行解释说明,查看完整代码及预览效果请 点击这里。 简单说明原理:使用伪元素 ::before 绘制一个渐变色,然后使用伪元素 ::after 绘…

J2EE反射

目录 一.什么是反射 用实体类Student做示范 三.反射实例化 四.反射动态方法调用 五.反射读写属性 一.什么是反射 反射java语言中的一种机制,通过这种机制可以动态的实例化对象,读写属性,调用方法 二.类类 Class.forName(完整类名)类名…

16. 存储过程和存储函数

文章目录 1.存储过程和存储函数2.创建和使用存储过程2.1 语法:2.2 第一个存储过程,打印hello world2.3 调用语法2.4 带参数的存储过程2.5 调试存储过程 3.创建和使用存储函数3.1 存储函数定义3.2 存储函数语法:3.3 存储函数案例: …

Mybatis操作数据库执行流程的先后顺序是怎样的?

MyBatis是一个支持普通SQL查询、存储及高级映射的持久层框架,它几乎消除了JDBC的冗余代码。使Java开发人员可以使用面向对象的编程思想来操作数据库。对于MyBatis的工作原理和操作流程的理解,我们先来看下面的工作流程图。 MaBatis的工作流程 在上图中…

为什么弹性内容交付网络是决定网站性能的关键

如今的用户对于所访问网站都对网站有自己的标准,他们期望访问的网站性能良好,具有快速的页面加载时间和易于访问、新鲜且动态的内容,同时他们还希望享受无缝且安全的体验,无需停机或内容访问受到限制。比如微博等平台每次在网络热…

布隆过滤器在海量数据去重验证中应用

布隆过滤器在海量数据去重验证中应用 文章目录 布隆过滤器在海量数据去重验证中应用引子面试结束级方案——从数据库中取新手级方案——利用redis的set数据结构专业级方案——利用布隆过滤器 布隆过滤器基本概念优点缺点布隆过滤器的数据结构布隆过滤器的工作流程布隆过滤器的优…

数据库应用:MySQL备份与恢复

目录 一、理论 1.数据备份 2.完全备份与恢复 3.完全备份与恢复应用 4.增量备份与恢复 5.增量备份与恢复应用 6.使用脚本备份 7.日志管理 二、实验 1.完全备份与恢复 2.增量备份与恢复 3.使用脚本备份 三、问题 1.mysqldump报错 四、总结 一、理论 1.数据备份 …

企业电子招标采购系统源码Spring Cloud + Spring Boot + MybatisPlus + 前后端分离 + 二次开发

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审…

(ceph)CephFS 文件系统 MDS接口

创建 CephFS 文件系统 MDS 接口 //服务端操作 1)在管理节点创建 mds 服务 cd /etc/ceph ceph-deploy mds create node01 node02 node032)查看各个节点的 mds 服务 ssh rootnode01 systemctl status ceph-mdsnode01 ssh rootnode02 systemctl status cep…

浙大数据结构第三周之03-树3 Tree Traversals Again

题目详情: An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); push(2)…

怎么对XMind思维导图加密?

在现代社会中,信息安全变得越来越重要。对于那些使用XMind思维导图来组织和管理重要信息的人来说,保护思维导图中的内容免受未经授权的访问变得至关重要。本文将介绍如何加密XMind思维导图,以确保您的信息安全。 什么是XMind思维导图&#x…

【itext7】itext7操作PDF文档之创建PDF文档、加载PDF文档、添加空白页、操作PDF页面、itext中的常见类及其方法

这篇文章,主要介绍itext7操作PDF文档之创建PDF文档、加载PDF文档、添加空白页、操作PDF页面、itext中的常见类及其方法。 目录 一、itext7操作PDF 1.1、itext7介绍 1.2、引入itext-core依赖 1.3、创建PDF文档 1.4、加载PDF文档 1.5、操作PDF页面 1.6、添加空…