苍穹外卖第三天(Swagger、@RequestParam和@RequestBody的使用场景、@PostMapping和@RequestMapping的区别、对象属性拷贝、@Insert注解)

news/2025/10/10 21:51:45/文章来源:https://www.cnblogs.com/Upwardxx/p/19133949

一、Swagger
Swagger是一个用于生成、描述、文档化可视化API的工具(框架)。直接使用Swagger会比较繁琐,所以我们用到了Knife4j框架,它对Swagger进行了封装,简化了相应的操作。
1、Knife4j的使用方式:
(1)导入Knife4j的maven坐标

image

(2)在配置类中加入Knife4j相关配置

image

指定生成接口要扫描的包:com.sky.controller
这里面的类、方法、属性都扫描到,通过反射来解析这些,最终生成接口文档。

(3)设置静态资源映射,否则接口文档页面无法访问到

image

如果我们没有设置静态资源映射,当访问localhost:8080/doc.html时,SpringMVC框架会不认为我们访问的是静态资源,它会以为我们访问的是某个controller。

YAPI是设计阶段使用的工具,管理和维护接口。
Swagger是在开发阶段使用的框架,帮助后端开发人员做后端的接口测试。

2、Swagger常用注解

image

这些注解标在该标的位置上面后,文档里就会生成对应的描述信息。描述类是干嘛的、方法是干嘛的、属性代表什么意思。

二、@RequestParam和@RequestBody的使用场景
@RequestParam通常用于GET请求,接收的参数形式是key-value形式,要求请求头中的content-type字段值是application/x-www-form-urlencoded
@RequestBody通常用于接收前端发来的json串,请求头中的content-type字段值可以是application/json或者application/xml
Content-type字段用于指定请求体的媒体类型,帮助服务器理解请求体中数据格式。

三、@PostMapping和@RequestMapping的区别
@PostMapping特定于Post请求,表明该方法处理的是Post请求,增加了代码的可读性和意图明确性。后面可以添加路径; = @RequestMapping(method = RequestMethod.POST)
@RequestMapping可以用来指定多种类型的HTTP请求(GET、POST、PUT、DELETE等),可以用过method属性来指定特定类型,后面也可以添加路径、属性等。

四、对象属性拷贝
使用EmployeeDTO是为了方便封装前端传来的数据,但最终传给持久层还是建议用实体类,所以要把DTO中的属性拷贝给实体类。(前提是对应的属性名要一致,并且剩下的属性逐个set)
BeanUtils.copyProperties(employeeDTO, employee);

五、@Insert注解
当我们只是进行简单的数据库操作时,就没有必要在xml文件中写SQL语句了,直接在Mapper层的方法上标注@Insert注解,里面写SQL语句就好。

image

注意这里的对应关系,数据库中的是id_number,但实体类employee中的字段是idNumber驼峰命名。如果想要在这里能对应上,需要在application.yml配置文件中开启驼峰命名

map-underscore-to-camel-case: true

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

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

相关文章

Git 多账号管理

# 新建空白文件夹 mkdir <YOUR PROJECT> # 初始化仓库 git init # 配置当前仓库账号 git config user.name "<YOUR NAME>" git config user.email "<YOUR EMAIL>" # 给当前账号…

完整教程:一文读懂费用分析:定义、分类与成本费用区别

完整教程:一文读懂费用分析:定义、分类与成本费用区别2025-10-10 21:48 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; …

Hyper Server 2019安装I226-V网卡驱动

背景:Hyper-V Server 2019 安装完提示找不到活动的网络适配器 网卡型号:Intel I226-V 以下内容以Hyper-V Server 2019和Intel I226-V网卡为例,其他系统版本(NT6以上)和同系列网卡,操作大同小异,可参考进行。 由…

P10201 永恒

rt好题。 对于一次询问 \((x_1,y_1)\) 到 \((x_2,y_2)\),显然若两点不在同一个联通块中则无解。考虑在同一个联通块中的答案。 我们对整张图进行黑白染色。则有结论:若黑色/白色格点存在不同的数,则一定有解。 证明…

CF1209H tj

zd 讲的啥玩意啊。 题意 你初始的能量为 \(0\),每秒会回复一点能量,同时你每秒可以花 \(x\in [0,2]\) 点能量行走 \(x\) 的距离。 同时地上会有 \(n\) 个传送带,传送带的基础速度为 \(s_i\),求从 \(0\) 走到 \(L\)…

AirBattery - 在Mac上实时监控所有苹果设备电量

AirBattery是一款专为Mac设计的电池监控工具,能够实时显示iPhone、iPad、Apple Watch等苹果设备的电量信息,支持Dock栏、状态栏和小组件显示,让您随时掌握所有设备的电池状态。项目简介 AirBattery 是一款功能强大的…

HTML学习日记

2025.10.10 打卡HTML中尽量不要省略结束标签,而且空元素最好写<br />而不是<br>,这样子做是保证每一个元素都被关闭(空元素在开始标签中关闭)。 使用小写标签,尽管大写也能解析,但是小写标签更被推荐…

10.10每日总结

今天主要的课程有人机交互和机器学习,还有大数据的作业题差一道没完成(用hbase建表),后天就是外语能力大赛的初赛了,加油!

二分图与网络流 Trick

dag 最大独立集(也叫最长反链)Dilworth 定理:一个 dag 中最大独立集的大小,等于其偏序集的最小不可重链覆盖的大小。听着很神秘,实际是这样: 偏序集:对于每一个点三元组 \((i, k, j)\),如果原图中有边 \((i, k…

10月10号

今天进行了日语的学习。 以及对数据结构和离散数学的复习。

win11 系统如何进行硬盘分区?固态硬盘怎么分区?SSD 固态硬盘分区教程

win11本身就有自带的分区功能,所以不用借肋第三方软件也能分区,下面开始分享分区方法。 win11其实和win10差不多,功能也差不多,如果分区过win10可能都不用学就会。 理解原理 将硬盘分区,就是把原有硬盘类式于一个…

10/10

今天上午就一节课,明天放假,雨什么时候停呀

数论(未完)

前言: 复习一下数论(部分) 裴蜀定理 结论: \(∀a,b∈Ζ\),设\(d=gcd(a,b)\) ,则\(∃x,y\)使得\(ax+by=d\) 推论:\(ax+by=m\)有解,当且仅当\(d|m\) 若\(gcd(a,b)=1\),则存在\(x,y\)使得\(ax+by=1\) 对于\(n\)个…

没做完的题

放在这里待办 定义 \[g(n)=2\sum ^n_{i=2}\left \lfloor \frac{n}{i} \right \rfloor^2 \phi(i)+n^2 \]求 \(g(n)\) 定义 \[f(n)=\frac{g(n)-n^2}{2} \]则 \[f(n)=\sum ^n_{i=2}\left \lfloor \frac{n}{i} \right…

JavaScriptDay1

1.什么是JavaScript 1.1 概述 JavaScript是一门世界上最流行的脚本语言 Java、JavaScript 一个合格的后端人员,必须要精通JavaScript 2.快速入门 2.1、引入javaScript内部标签 <script>//... </script> 外…

淘宝NPM镜像地址https://registry.npm.taobao.org不可用

1 地址已经更新了,https://registry.npm.taobao.org已经停服2 新地址是 https://registry.npmmirror.com

星星充电一面

1、你是否了解ThreadLocal吗 2、如果有父线程和子线程,那么子线程是否能访问到父线程ThreadLocal里面的内容吗 3、那你的项目中只是一个单体项目吗,没有子线程?那如果我想要子线程访问父线程里面的内容怎么办 4、布…

6 CF1034 div3 题解

CF1034 div3 打了一下虚拟赛,感觉自己写代码不够认真,前面三个题都是能秒的,结果还寄了几发 这波直接写不会的题的题解吧,节省时间 F 题面 给定一个 \(n\) ,对于一个长度为 \(n\) 的排列,称满足下面条件的排列为…

5 ABC413 题解

ABC 413 题解 D 题面 给定一个长度为 \(N\) 的整数序列 \(A=(A_1,A_2,\ldots,A_N)\) 。 保证对于任何 \(i\ (1\le i\le N)\) , \(A_i\) 不为 \(0\) 。 判断是否存在 \(A\) 的一个排列 \(B=(B_1,B_2,\ldots,B_N)\) 使得…

4 CF 1032 div3 题解

31 CF 1032 div3 题解 C 题面 给你一个行数为 \(n\) 列数为 \(m\) 的整数矩阵。在第 \(i\) 行和第 \(j\) 列的交叉处的单元格中包含数字 \(a_{ij}\) 。 您可以执行以下操作次:选择两个数字 \(1 \leq r \leq n\) 和 \(…