基于SSM的订餐系统--菜品新增(涉及多表插入,上传图片)

2023-11-09 08:50

本文主要是介绍基于SSM的订餐系统--菜品新增(涉及多表插入,上传图片),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求分析

在这里插入图片描述

后台系统可以管理菜品信息,通过新增功能来添加一个新的菜品,在添加菜品时需要选择当前菜品所属的分类,并且需要上传菜品图片,在客户端会按照菜品分类来展示对应的菜品信息。

新增菜品,其实就是将新增页面录入的菜品信息插入dish表,如果添加了口味做法,还需要向dish_flavor表插入数据。所以在新增菜品时,涉及两个表:
dish — 菜品表
dish_flavor—菜品口味表

在开发代码之前,我们先梳理一下新增菜品时前端页面和服务端的交互过程
1.页面发送ajax请求,请求服务端获取菜品分类数据并展示到下拉框中
2.页面发送请求进行图片上传,请求服务端将图片保存到服务器 (关注上文)
3.页面发送请求进行图片下载,将上传的图片进行回显(关注上文)
4.点击保存按钮,发送ajax请求,将菜品相关数据以json形式提交服务端

1.页面发送ajax请求,请求服务端获取菜品分类数据并展示到下拉框中,根据type参数进行查询,菜品分类type
为1,套餐分类type为2

 // 获取菜品分类getDishList () {getCategoryList({ 'type': 1 }).then(res => {if (res.code === 1) {this.dishList = res.data} else {this.$message.error(res.msg || '操作失败')}})}// 获取菜品分类列表
const getCategoryList = (params) => {return $axios({url: '/category/list',method: 'get',params})
}

controller:

@GetMapping("/list")public R<List<Category>> getCategoryList(Category category){LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(category.getType()!=null,Category::getType,category.getType());queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime);List<Category> list = categoryService.list(queryWrapper);return R.success(list);}

4.点击保存按钮,发送ajax请求,将菜品相关数据以json形式提交服务端
在这里插入图片描述需要导入DishDto,用于封装页面提交的数据。
Dto: 即数据传输对象,一般用于表示层与服务层之间的数据传输。

Dto:

@Data
public class DishDto extends Dish {private List<DishFlavor> flavors = new ArrayList<>();
}

DishService:

public interface DishService extends IService<Dish> {//新增菜品,同时插入菜品对应的口味数据,需要操作dish和dish_flavorpublic void saveWithFlavor(DishDto dishDto);
}**DishServiceImpl:**
```java
@Service
@Slf4j
public class DishServiceImpl extends ServiceImpl<DishMapper, Dish> implements DishService {@Autowiredprivate DishFlavorService dishFlavorService;/*** 新增菜品,同时保存对应的口味数据* @param dishDto*/@Override@Transactional //涉及多张表,添加事务注解,public void saveWithFlavor(DishDto dishDto) {//保存菜品的基本信息到菜品表dishthis.save(dishDto);//获取菜品idLong dishId = dishDto.getId();//菜品口味List<DishFlavor> flavors = dishDto.getFlavors();//将菜品id加入flavors = flavors.stream().map((item)->{item.setDishId(dishId);return item;}).collect(Collectors.toList());//保存菜品口味至菜品口味表dish_flavordishFlavorService.saveBatch(flavors);}
}
**启动类添加@EnableTransactionManagement注解,开启事务管理:**
```java
@Slf4j //日志
@SpringBootApplication
@ServletComponentScan
@EnableTransactionManagement
public class ReggieApplication {public static void main(String[] args) {SpringApplication.run(ReggieApplication.class,args);log.info("项目启动成功");}
}

DishController:

 @PostMapping()public R<String> save(@RequestBody DishDto dishDto ){dishService.saveWithFlavor(dishDto);return R.success("保存成功");}

这篇关于基于SSM的订餐系统--菜品新增(涉及多表插入,上传图片)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/375143

相关文章

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并