首页 > 其他分享 >新增菜品——后端SpringBoot

新增菜品——后端SpringBoot

时间:2024-06-08 22:57:59浏览次数:21  
标签:dishDto SpringBoot 后端 private 菜品 dish 数据 public

交互逻辑:

  1. 页面发送ajax请求,请求服务端获取菜品分类数据并展示到下拉框中
  2. 页面发送请求进行图片上传,请求服务端将图片保存到服务器
  3. 页面发送请求进行图片下载,将上传的图片进行回显
  4. 点击保存按钮,发送ajax请求,将菜品相关数据以json形式提交到服务器

核心:

        新增菜品功能,实质就是在服务端处理前端页面发送的4次请求。

代码:

1.查询分类数据

在CategoryController.java中:

    /**
     * 根据条件来查询分类数据
     * @param category
     * @return
     */
    @GetMapping("/list")
    public R<List<Category>> list(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);
    }

2.接收页面提交的数据

封装页面提交的数据:

@Data
public class DishDto extends Dish {

    private List<DishFlavor> flavors = new ArrayList<>();

    private String categoryName;

    private Integer copies;
}

在dishController.java中保存数据:


@RestController
@RequestMapping("/dish")
@Slf4j
public class DishController {
    @Autowired
    private DishService dishService;

    @Autowired
    private DishFlavorService dishFlavorService;

    /**
     * 新增菜品
     * @param dishDto
     * @return
     */
    @PostMapping
    public R<String> save(@RequestBody DishDto dishDto){
        log.info(dishDto.toString());

        return null;
    }
}

3.保存数据

需要操作dish、dishFlavor两张表,即同时插入菜品对应的口味数据:

3.1 接口dishService处声明:

public interface DishService extends IService<Dish> {

    //新增菜品,同时插入菜品对应的口味数据,操作dish、dishFlavor两张表
    public void saveWithFlavor(DishDto dishDto);
}

3.2 实现类处实现:

DishFlavor中的dishId要赋好值。 

@Transactional注解作用是确保保存菜品基本信息和保存菜品口味数据的过程实是在一个事务中完成的。

    @Autowired
    private DishFlavorService dishFlavorService;
    /**
     * 新增菜品,同时保存对应的口味数据
     * @param dishDto
     */

    @Transactional
    public void saveWithFlavor(DishDto dishDto) {
        //保存菜品的基本信息到dish表
        this.save(dishDto);

        Long dishId = dishDto.getId(); //菜品id

        //菜品口味
        List<DishFlavor> flavors = dishDto.getFlavors();
        flavors = flavors.stream().map((item) ->{
            item.setDishId(dishId);
            return item;
        }).collect(Collectors.toList());
        //获取菜品口味集合中的Stream流,遍历每个DishFlavor对象,将其id赋值为dishDto里的菜品id
        //最后通过Collectors.toList()收集器将流中的元素收集到一个新的List集合中

        //保存菜品的口味数据到dish_flavor表中
        dishFlavorService.saveBatch(flavors);
    }

标签:dishDto,SpringBoot,后端,private,菜品,dish,数据,public
From: https://blog.csdn.net/weixin_53717695/article/details/139380480

相关文章

  • Springboot 开发 -- Redis实现分布式Session
    一、引言在微服务架构和分布式系统中,会话管理(SessionManagement)成为了一个挑战。传统的基于Servlet容器的会话管理方式在分布式环境下无法有效工作,因为用户请求可能会被分发到不同的服务器上,导致会话数据无法共享。为了解决这个问题,SpringSession提供了一种基于外部存储(......
  • 【计算机毕业设计】springboot027网上点餐系统
    随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于网上点餐系统当然也不能排除在外,随着网络技术的不断成熟,带动了网上点餐系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平台特别......
  • 【计算机毕业设计】springboot030甘肃非物质文化网站的设计与开发
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本甘肃非物质文化网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,......
  • 【计算机毕业设计】springboot031教师工作量管理系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了教师工作量管理系统的开发全过程。通过分析教师工作量管理系统管理的不足,创建了一个计算机管理教师工作量管理系统的方案。文章介绍了教师工作量管理系统的系统分析部分,包括可......
  • 【计算机毕业设计】springboot032阿博图书馆管理系统
    随着社会的发展,计算机的优势和普及使得阿博图书馆管理系统的开发成为必需。阿博图书馆管理系统主要是借助计算机,通过对图书借阅等信息进行管理。减少管理员的工作,同时也方便广大用户对所需图书借阅信息的及时查询以及管理。阿博图书馆管理系统的开发过程中,采用B/S架构,主......
  • 小白之路之SpringBoot框架
    在最近学习闲暇时刻突然爆发灵感想要自己写一个通用的SpringBoot项目出来,目前使用了到jwt+redis+mybatisPlus嗯差不多这些吧。整个项目的目录框架这个结构差不多也是在网上到处缝缝补补(以致于可能是SpringBoot还是SpringCloud都有一点分不清除了),暂时分为了两个模块1、com......
  • SpringBoot 快速实现 api 加密!
    在项目中,为了保证数据的安全,我们常常会对传递的数据进行加密。常用的加密算法包括对称加密(AES)和非对称加密(RSA),博主选取码云上最简单的API加密项目进行下面的讲解。https://gitee.com/isuperag/rsa-encrypt-body-spring-boot项目介绍该项目使用RSA加密方式对API接口返回的......
  • SpringBoot热部署设置
    在使用SpringBoot进行开发过程中,我们往往会对代码进行反复修改并对项目进行部署查看效果,这时反复重启SpringBoot会很麻烦,因此使用热部署是提高开发效率的必备插件——“spring-boot-starter-test”<!--SpringBoot热部署依赖--><dependency> <groupId>org.springframew......
  • 【计算机毕业设计】springboot287基于javaEE的校园二手书交易平台的设计与实现
    信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容......
  • 【计算机毕业设计】springboot283图书商城管理系统
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本图书商城管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达......