苍穹外卖Day04套餐管理部分总结

写给像我一样完完全全的小白的。本人代码水平一塌糊涂,前几天就是机械地跟着视频敲代码。对于Day04的作业本来感觉代码抓瞎一点不会写,尽力去理解业务逻辑后发现好像也没那么难,整体代码可以仿照Day03新增菜品来进行实现!

一、功能一——新增套餐

1. 根据分类id查询对应哪些菜品,返回菜品列表List<Dish>

(1)思路梳理

“根据分类id查询该分类下对应了哪些菜品”这个接口实现下图这部分功能
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0e73e0c61beb4be4b5bf1fea8cbd65f7.png

现在我们有了分类列表category、也有了菜品列表dish,即将完善的是套餐列表setmeal套餐对应的菜品列表setmeal_dish

分类列表category如下图所示:
在这里插入图片描述
分类列表的type列描述了分类的类型,其中1表示菜品分类,2表示套餐分类。只有type=2的分类id会出现在setmeal表中。setmeal表的具体内容如下图所示:
在这里插入图片描述
dish表中对应的category_id是这道菜所归属的菜品分类的id,它不包含13和15的,因为13和15是category中标志着“套餐分类”的id。dish表的内容如下图所示。
在这里插入图片描述
根据黑马资料里给出的数据库设计文档(如下图所示),setmeal_dish表整合了setmeal表对应的id、dish表对应的id,用来表示“A套餐(通过setmeal_id来标记)由归属于C菜品、D菜品和E菜品等组成(C、D、E等菜品分别有自己的dish_id,而dish表中又有它们分别对应的category_id)”。
在这里插入图片描述

(2)代码实现

1)DishController

返回类型是一个列表,通过category_id查询当前类别中有哪些菜品。所以category_id做参数。

/*** 根据分类id查询菜品* @param categoryId* @return
*/
@GetMapping("/list")
@ApiOperation("根据分类id查询菜品")
public Result<List<Dish>> list(Long categoryId){List<Dish> list = dishService.list(categoryId);return Result.success(list);
}
2)DishService

在DishService.java的接口类中记录list方法

/*** 根据分类id查询菜品* @param categoryId* @return
*/
List<Dish> list(Long categoryId);
3)DishServiceImpl

在实现类中,具体地实现list方法,能够根据分类id查询到菜品,并且以列表的形式返回。这里创建了一个 Dish 对象,使用了建造者模式(Builder Pattern)来构建对象。①categoryId(categoryId) 设置了菜品对象的分类ID属性为传入的 categoryId 参数;②status(StatusConstant.ENABLE) 设置了菜品对象的状态为启用状态,这里使用了一个常量 StatusConstant.ENABLE 来表示启用状态;③build() 方法用于构建 Dish 对象。

/*** 根据分类id查询菜品* @param categoryId* @return
*/
public List<Dish> list(Long categoryId) {Dish dish = Dish.builder().categoryId(categoryId).status(StatusConstant.ENABLE).build();return dishMapper.list(dish);
}

接下来我们还需要在DishMapper中声明**“根据传入的动态dish信息,将查询到的菜品以列表形式返回”**的方法,并在DishMapper.xml中具体实现这一功能。

4)DishMapper
/*** 动态条件查询菜品* @param dish* @return
*/
List<Dish> list(Dish dish);
5)DishMapper.xml

对传入的name、category_id、status分别做判断

<select id="list" resultType="Dish" parameterType="Dish">select * from dish<where><if test="name != null">and name like concat('%',#{name},'%')</if><if test="categoryId != null">and category_id = #{categoryId}</if><if test="status != null">and status = #{status}</if></where>order by create_time desc
</select>

到这里,根据分类id查询菜品的功能就已经完成了!

2. 套餐管理功能

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

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

相关文章

关于简单又挣钱的冷门美团项目,美团圈圈

大家好&#xff0c;最近美团又开始搞事情了。接连推出了好几个网推项目&#xff0c;让一大波人都吃上了肉了。 美团的项目很简单&#xff0c;就是给它们的活动做推广。用户只需要拿到它推广的链接&#xff0c;然后去扫码进群就可以了。只要用户保持8天不退就行了。 下面是体验…

2024 ccfcsp认证打卡 2022 09 01 如此编码

2022 09 01 如此编码 题解1题解2 题解1 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 天数int m sc.nextInt(); // 科目数int[] b new int[n 1]; // 存放结果的数…

剖析Linux内核的内存管理

大家好&#xff0c;今天给大家介绍剖析Linux内核的内存管理&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 Linux内核的内存管理是一个复杂且关键的部分&#xff0c;它负责确保系…

MyBatis的基本应用

源码地址 01.MyBatis环境搭建 添加MyBatis的坐标 <!--mybatis坐标--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!--mysql驱动坐…

百卓Smart管理平台 importexport.php SQL注入漏洞复现(CVE-2024-27718)

0x01 产品简介 百卓Smart管理平台是北京百卓网络技术有限公司(以下简称百卓网络)的一款安全网关产品,是一家致力于构建下一代安全互联网的高科技企业。 0x02 漏洞概述 百卓Smart管理平台 importexport.php 接口处存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数据…

Transformer的代码实现 day04(FFN)

前馈神经网络&#xff08;FFN&#xff09; 几个线性层、激活函数、归一化层的叠加 注意&#xff1a;归一化是在保持数据分布的前提下&#xff0c;将数据缩放到特定范围&#xff0c;方便运算。注意&#xff1a;标准化是让不同特征的数据保持相似的尺度&#xff0c;但是会改变数…

【CANN训练营笔记】Atlas 200I DK A2体验手写数字识别模型训练推理

环境介绍 开发板&#xff1a;Huawei Atals 200I DK A2 内存&#xff1a;4G NPU&#xff1a;Ascend 310B4 CANN&#xff1a;7.0 准备环境 下载编译好的torch_npu wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/torch_npu-2.1.0rc1-cp39-cp39-linux_aarch…

python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下python基础中的关于模块的导入&#xff1a; 1&#xff0c;模块的介绍 2&#xff0c;模块的导入方式 3&#xff0c;自定义模块 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基…

Transformer的代码实现 day03(Positional Encoding)

Positional Encoding的理论部分 注意力机制是不含有位置信息&#xff0c;这也就表明&#xff1a;“我爱你”&#xff0c;“你爱我”这两者没有区别&#xff0c;而在现实世界中&#xff0c;这两者有区别。所以位置编码是在进行注意力计算之前&#xff0c;给输入加上一个位置信息…

Leetcode 234. 回文链表

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;he…

Maven依赖管理项目构建工具

一、Maven简介 1、为什么学习Maven 1.1、Maven是一个依赖管理工具 ①jar 包的规模 随着我们使用越来越多的框架&#xff0c;或者框架封装程度越来越高&#xff0c;项目中使用的jar包也越来越多。项目中&#xff0c;一个模块里面用到上百个jar包是非常正常的。 比如下面的例…

jvm总结学习

四种加载器 1.启动类加载器 2.拓展类加载器 3.应用程序加载器 4.自定义加载器 沙箱机制 就是为了保证安全&#xff0c;增加的一些权限。 native方法区&#xff08;静态变量&#xff0c;常量&#xff0c;类信息&#xff08;构造方法&#xff0c;接口定义&#xff09;&…