外卖点餐APP-04(后台–菜品管理)

(一)新增

外卖点餐APP-04(后台--菜品管理)

controller层思路:

  1. 调用service处理
  2. 响应处理结果

service层

serviceImpl层思路:

注意:由于新增菜品操作了两张表  进行了2个写操作,要保证插入菜品基本信息和口味信息同时成功 新增菜品才成功 所以需要添加事务管理,在方法上打上@Transactional注解以及在启动类上开启事务注解驱动管理即可

  1. 检查菜品名称不能重复
  2. 保存菜品基本信息到菜品口味表dish,可以直接传dishDto对象 因为dishDto继承了Dish  插入时只会根据Dish类中有的属性设置插入字段的值 多余的字段会自动忽略
  3. 获取菜品id  MyBatisPlus中当完成了新增操作之后,会自动的将生成的id赋值到对象的主键属性上
  4. 保存菜品口味信息到菜品口味表dish_flavor
  5. 获取菜品口味信息列表
  6. 为当前的菜品口味设置关联的菜品id dish_id字段

(二)分页查询

外卖点餐APP-04(后台--菜品管理)

controller层

service层

serviceImpl层

注意事项:

问题1:分页查询时 菜品图片没有显示
       原因:没有将测试数据中 菜品对应图片放入 D:reggie目录下
       解决:将资源中提供的图片资源放入D:reggie目录下
问题2:分页查询时  菜品所属的分类名称没有展示
       原因:前端页面进行菜品所属分类展示时 需要的是菜品分类名称categoryName 而我们查询菜品表返回的数据只有菜品所属分类id 没有分类名称
       解决

  1. 分页查询返回菜品列表数据的同时  在每一条菜品数据中应该包含菜品的所属分类名称categoryName
  2. 将每一个菜品dish对象中的数据 封装到dishDto对象中,并且设置dishDto对象的categoryName属性即可实现前端的正常展示
  3. 响应的数据  Page<Dish>>   ==》     Page<DishDto>>
  4. 原来响应的给前端的数据是        R<Page<Dish>> —–>    Page<Dish>:封装分页相关的数据 records:当前页数据List<Dish>     total:总条数
  5. 现在我们要响应给前端的数据是     R<Page<DishDto>> —-> Page<DishDto>:封装分页相关的数据  records:当前页数据 List<DishDto>  total:总条数

实际实现步骤:

  1. 从dishPage对象中获取当前页数据列表 dishList  List<Dish>
  2. 遍历dishList集合 将集合中的每一个dish对象中的数据赋值到DishDto对象中,并且为DishDto对象的categoryName属性赋值
  3. 在遍历dishList集合时,将每一个新创建出来的dishDto对象 存入到dishDtoList集合中 【这样就得到当前页要显示的数据集合了】
  4. 将当前页数据集合dishDtoList和总条数封装到dishDtoPage对象中返回即可

(三)ID条件查询

controller层

service层

serviceImpl层思路:

  1. 根据菜品id查询菜品的基本信息数据
  2. 根据菜品id查询菜品的口味信息数据
  3. 将菜品的基本信息及其口味信息封装到DishDto对象中返回
  4. 使用Spring提供的BeanUtils工具类 可以将一个源对象的属性数据赋值到一个目标对象属性上 要求属性名称前后一致
  5. 返回结果

(四)修改

外卖点餐APP-04(后台--菜品管理)controller层

来源:六根火柴头

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月1日
下一篇 2022年9月1日

相关推荐