苍穹外卖学习-----2024/03/09

1.菜品分页查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码在这里
分页查询菜品

2.删除菜品

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


[链接]param

1、概览
本文将带你了解 Spring 中 @RequestParam 注解的用法。

简单地说,可以使用 @RequestParam 从请求中提取查询参数、表单参数甚至是多个参数。

2、示例端点
假设我们有一个端点 /api/foos,它接受一个名为 id 的查询参数:

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam String id) {return "ID: " + id;
}

在本例中,使用 @RequestParam 来提取 id 查询参数。

通过 GET 请求来调用 getFoos:

http://localhost:8080/spring-mvc-basics/api/foos?id=abc

ID: abc

接下来,看看注解的属性:name、value、required 和 defaultValue。

  • 3、指定请求参数名称
    在上一个示例中,变量名和参数名都是相同的。

如果变量名称和参数名称不同,可以使用 name 属性配置 @RequestParam 名称:

@PostMapping("/api/foos")
@ResponseBody
public String addFoo(@RequestParam(name = "id") String fooId, @RequestParam String name) { return "ID: " + fooId + " Name: " + name;
}

也可以使用 @RequestParam(value = “id”) 或直接使用 @RequestParam(“id”)。

4、可选的请求参数
使用 @RequestParam 注解的方法参数默认为必填参数。

这意味着,如果请求中没有该参数,就会返回 400 错误:

GET /api/foos HTTP/1.1

400 Bad Request
Required String parameter 'id' is not present

可以使用 required 属性将 @RequestParam 配置为可选参数:

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam(required = false) String id) { return "ID: " + id;
}

在这种情况下,下面两个调用都是正常的:

http://localhost:8080/spring-mvc-basics/api/foos?id=abc

ID: abc
http://localhost:8080/spring-mvc-basics/api/foos

ID: null
如果没有指定参数,方法参数将绑定为 null。

4.使用 Java 8 Optional
或者,也可以用 Optional 对象来封装参数:

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam Optional<String> id){return "ID: " + id.orElseGet(() -> "not provided");
}

在这种情况下,不需要指定 required 属性。

如果没有提供请求参数,则使用默认值:

http://localhost:8080/spring-mvc-basics/api/foos 

ID: not provided
5、请求参数的默认值
还可以使用 defaultValue 属性为 @RequestParam 设置默认值:

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam(defaultValue = "test") String id) {return "ID: " + id;
}

与 required=false 类似,用户不再需要提供参数:

http://localhost:8080/spring-mvc-basics/api/foos

ID: test
不过,也可以主动提供:

http://localhost:8080/spring-mvc-basics/api/foos?id=abc

ID: abc
注意,当设置 defaultValue 属性时,required 会被被设置为 false。

6、映射所有参数
还可以使用 Map 来封装多个参数,而无需定义它们的名称(name)或数量:

@PostMapping("/api/foos")
@ResponseBody
public String updateFoos(@RequestParam Map<String,String> allParams) {return "Parameters are " + allParams.entrySet();
}

上述示例会把所有请求参数返回给客户端:

curl -X POST -F 'name=abc' -F 'id=123'http://localhost:8080/spring-mvc-basics/api/foos

Parameters are {[name=abc], [id=123]}

7、多值参数(列表/数组)
一个 @RequestParam 可以有多个值:

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam List<String> id) {return "IDs are " + id;
}

Spring MVC 会映射以逗号分割的参数:

http://localhost:8080/spring-mvc-basics/api/foos?id=1,2,3
----
IDs are [1,2,3]
或参数列表:http://localhost:8080/spring-mvc-basics/api/foos?id=1&id=2
----
IDs are [1,2]
关于 Spring Boot 如何接受数组、集合类型的参数你可以参阅 这篇文章。

8、总结
本文介绍了在 Spring 应用中如何使用 @RequestParam 注解来接收客户端参数。还介绍了如何处理参数的名称、使用默认参数、定义可选参数、接收多个参数等等。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


  //优化代码//可以删除--删除菜品数据dishMapper.deleteByids(ids);//删除菜品关联的口味数据dishFlavorMapper.deleteByDishByIds(ids);
 /*** 根据菜品ID集合删除菜品* @param ids*/void deleteByids(List<Long> ids);
  /*** 根据菜品id删除口味* @param dishIds*/void deleteByDishByIds(List<Long> dishIds);
<delete id="deleteByDishByIds">
#         delete from dish_flavor where dish_id in (?,?,?)delete from dish_flavor where dish_id<foreach collection="dishIds" open="(" close=")" separator="," item="dishId">#{dishId}</foreach></delete>
   <delete id="deleteByids">delete from dish where id in<foreach collection="ids" open="(" close=")" separator="," item="id">#{id}</foreach></delete>

3.修改菜品

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

11. 搭建较通用的GoWeb开发脚手架

文章目录 导言一、加载配置二、初始化日志三、初始化MySQL连接四、初始化Redis连接五、初始化gin框架内置的校验器使用的翻译器六、注册路由七、 启动服务八、测试运行九&#xff1a;注意事项 代码地址&#xff1a;https://gitee.com/lymgoforIT/bluebell 导言 有了前述知识的…

Linux 之五:权限管理(文件权限和用户管理)

1. 文件权限 在Linux系统中&#xff0c;文件权限是一个非常基础且重要的安全机制。它决定了用户和用户组对文件或目录的访问控制级别。 每个文件或目录都有一个包含9个字符的权限模式&#xff0c;这些字符分为三组&#xff0c;每组三个字符&#xff0c;分别对应文件所有者的权限…

基于springboot+vue的食品安全管理系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 1 首页 2 后台登录 3 食品信息添加页面 4 食品查询 三、库表设计 四、论文 前言 从事食品行业的商家可能会对于食品的储存以及食品的销售&#xff0c;都有着不同门道的想法&#xff0c;那么如何能将这些想法一一实现&#xff0c;…

【Linux】CentOS网络故障排查大揭秘: 实战攻略解读

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 检查网络连接状态&#xff1a; 检查网络配置&#xff1a; 重启网络服务&#xff1a; 检查防火墙设置&#xff1a; 查看日志文…

大模型笔记:幻觉 hallucination

1 介绍 “幻觉” (Hallucination)&#xff0c;指模型生成自然流畅&#xff0c;语法正确但实际上毫无意义且包含虚假信息即事实错误的文本&#xff0c;以假乱真&#xff0c;就像人产生的幻觉一样。 举个例子就是&#xff0c;即使现在的chatgpt-4&#xff0c;你问他一些有确切…

【Nestjs实操】环境变量和全局配置

一、环境变量 1、使用dotenv 安装pnpm add dotenv。 根目录下创建.env文件&#xff0c;内容如下&#xff1a; NODE_ENVdevelopment使用 import {config} from "dotenv"; const path require(path); config({path:path.join(__dirname,../.env)}); console.log(…

腾讯云轻量应用服务器流量用完了怎么办?

腾讯云轻量服务器流量用完了怎么办&#xff1f;超额流量另外支付流量费&#xff0c;流量价格为0.8元/GB&#xff0c;会自动扣你的腾讯云余额&#xff0c;如果你的腾讯云账号余额不足&#xff0c;那么你的轻量应用服务器会面临停机&#xff0c;停机后外网无法访问&#xff0c;继…

Elasticsearch从入门到精通-03基本语法学习

Elasticsearch从入门到精通-03基本语法学习 &#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是程序员行走的鱼 &#x1f4d6; 本篇主要介绍和大家一块学习一下ES基本语法,主要包括索引管理、文档管理、映射管理等内容 1.1 了解Restful ES对数据进行增、删、改、查是以…

SSD的原理

简介 SSD&#xff08;Solid State Drive&#xff09;是一种使用闪存存储芯片&#xff08;NAND Flash&#xff09;的存储设备。与传统的机械硬盘不同&#xff0c;SSD没有移动部件&#xff0c;因此具有更快的读写速度和更低的能耗。 架构 NAND Flash是一种非易失性存储器&…

别错过AI 大模型的奇妙世界!让你惊艳不已!

AI大模型的应用已经渐渐渗透到我们生活的方方面面&#xff0c;从语音识别到自然语言处理&#xff0c;从图像识别到智能推荐&#xff0c;无处不在的AI大模型正在改变着我们的生活。其背后隐藏的奇妙世界让人惊艳不已。 一方面&#xff0c;AI大模型在语音识别领域展现出了强大的…

opengl 学习(一)-----创建窗口

创建窗口 分类opengl 学习(一)-----创建窗口效果解析教程补充 分类 c opengl opengl 学习(一)-----创建窗口 demo: #include "glad/glad.h" #include "glfw3.h" #include <iostream> #include <cmath> #include <vector>using names…

SpringBoot 自定义映射规则resultMap collection一对多

介绍 collection是封装一对多关系的&#xff0c;通常情况下是一个列表&#xff0c;association是一对一&#xff0c;通常情况是一个对象。例如&#xff1a;查询班级下所有的学生&#xff0c;一个班级可以有多个学生&#xff0c;这就是一对多。 案例 有一个学生表&#xff0c…