当前位置: 首页 > news >正文

Springboot 套餐接口

@RestController // 标记这是一个RESTful风格的控制器,所有方法的返回值直接写入HTTP响应体中 @RequestMapping("/admin/setmeal") // 映射请求路径,所有套餐相关接口都以/admin/setmeal开头 @Api(tags = "套餐相关接口") // Swagger注解,用于生成接口文档,tags表示接口分组名称 @Slf4j // Lombok注解,自动生成log日志对象 public class SetmealController { @Autowired // 自动注入SetmealService实例 private SetmealService setmealService; /** * 新增套餐 * @param setmealDTO 套餐数据传输对象,包含套餐信息和关联的菜品列表 * @return 返回统一格式的成功结果 */ @PostMapping // 处理POST请求,映射路径为/admin/setmeal @ApiOperation("新增套餐") // Swagger注解,描述接口的作用 public Result save(@RequestBody SetmealDTO setmealDTO) { // @RequestBody将前端传来的JSON数据转换为SetmealDTO对象 // 1. 调用service层方法保存套餐信息(包括套餐本身和关联的菜品) setmealService.saveWithDish(setmealDTO); // 2. 返回成功响应给前端 return Result.success(); } } public interface SetmealService { // 套餐服务接口 /** * 新增套餐,同时需要保存套餐和菜品的关联关系 * @param setmealDTO 套餐数据传输对象,包含套餐信息和关联的菜品列表 */ void saveWithDish(SetmealDTO setmealDTO); // 接口方法声明,由实现类具体实现 } /** * 套餐业务实现 */ @Service // 标记这是一个Spring Service组件,自动注册到Spring容器 @Slf4j // Lombok注解,自动生成log日志对象 public class SetmealServiceImpl implements SetmealService { // 实现SetmealService接口 @Autowired // 自动注入SetmealMapper实例 private SetmealMapper setmealMapper; @Autowired // 自动注入SetmealDishMapper实例 private SetmealDishMapper setmealDishMapper; @Autowired // 自动注入DishMapper实例 private DishMapper dishMapper; /** * 新增套餐,同时需要保存套餐和菜品的关联关系 * @param setmealDTO 套餐数据传输对象 */ @Transactional // 开启事务管理,保证所有数据库操作要么全部成功,要么全部失败 public void saveWithDish(SetmealDTO setmealDTO) { // 1. 创建套餐实体对象 Setmeal setmeal = new Setmeal(); // 2. 将DTO中的属性值复制到实体对象中 // 把前端传来的套餐基本信息(分类ID、名称、价格、状态等)复制给setmeal BeanUtils.copyProperties(setmealDTO, setmeal); // 3. 向套餐表插入数据 // 执行insert操作,插入后setmeal对象会通过useGeneratedKeys自动获取到生成的套餐id setmealMapper.insert(setmeal); // 4. 获取生成的套餐id Long setmealId = setmeal.getId(); // 从插入后的setmeal对象中获取自动生成的主键ID // 5. 获取套餐关联的菜品列表 List<SetmealDish> setmealDishes = setmealDTO.getSetmealDishes(); // 获取前端传来的套餐-菜品关联关系列表 // 6. 为每个关联菜品设置套餐id setmealDishes.forEach(setmealDish -> { // 使用Lambda表达式遍历列表 setmealDish.setSetmealId(setmealId); // 设置套餐id,建立关联关系 }); // 7. 保存套餐和菜品的关联关系 // 批量插入套餐-菜品关联表数据 setmealDishMapper.insertBatch(setmealDishes); } } /** * 新增套餐 * @param setmeal 套餐实体对象,包含要插入的套餐信息 */ @AutoFill(OperationType.INSERT) // 自定义注解,自动填充创建时间、更新时间、创建人、更新人字段 void insert(Setmeal setmeal); // Mapper接口方法,对应XML中的insert语句 <!-- 定义插入语句,id对应Mapper接口中的方法名 --> <insert id="insert" parameterType="Setmeal" <!-- 参数类型:Setmeal实体类 --> useGeneratedKeys="true" <!-- 使用数据库自动生成的主键 --> keyProperty="id"> <!-- 将自动生成的主键值赋值给实体类的id属性 --> <!-- 插入语句:向setmeal表中插入数据 --> insert into setmeal <!-- 插入的字段列表(左括号) --> (category_id, name, price, status, description, image, create_time, update_time, create_user, update_user) <!-- values关键字,后面跟参数值列表 --> values <!-- 参数占位符,对应Setmeal实体类的属性 --> (#{categoryId}, <!-- 分类ID --> #{name}, <!-- 套餐名称 --> #{price}, <!-- 套餐价格 --> #{status}, <!-- 套餐状态:0禁用 1启用 --> #{description}, <!-- 套餐描述 --> #{image}, <!-- 套餐图片 --> #{createTime}, <!-- 创建时间 --> #{updateTime}, <!-- 更新时间 --> #{createUser}, <!-- 创建人ID --> #{updateUser}) <!-- 更新人ID --> </insert> @Transactional:保证套餐信息和关联菜品要么一起成功,要么一起失败 useGeneratedKeys:获取数据库自动生成的主键ID 批量插入:使用insertBatch一次性插入多条关联数据,提高性能 @AutoFill:自定义注解,自动填充公共字段(创建时间、更新时间等)
http://www.jsqmd.com/news/463038/

相关文章:

  • Oracle数据误删急救指南:ODU实战恢复DELETE操作(附完整命令清单)
  • 2026企业微信申请注册电话是多少?最新联系方式与高级功能详解 - 品牌2026
  • 2026年中国营销管理咨询公司榜单发布:十大机构实战能力深度排位赛 - 品牌推荐
  • Spring Boot整合MinIO实战:从Docker部署到文件上传完整流程
  • PostgreSQL 12.x 在Windows 10上的完整安装与远程访问配置教程
  • AI时代知识的“通货膨胀论”与其对策!
  • Qt实战:如何用QProxyStyle实现QTabBar横向布局(附完整代码)
  • 造相Z-Image文生图模型v2效果实测:中文提示词生成高清图片
  • 从反相器到触发器:标准单元库时序弧类型全图解(含setup/hold异常值分析)
  • 黑丝空姐-造相Z-Turbo快速上手:无需代码,用Gradio界面轻松玩转AI绘图
  • (2025)Ubuntu22.04 下 ns3-ai 的避坑部署与核心特性解析
  • 北京/上海/深圳等六城高端腕表维修去哪里:品牌故障差异+维修成本拆解+正规门店精准适配 - 时光修表匠
  • PyTorch新手必看:MNIST数据集加载的5个常见坑及解决方案(附transform实战代码)
  • 保姆级教程:从零开始用Python实现轴承故障AI诊断(含SVD去噪和小波变换)
  • 加油卡回收实用方法以及注意事项 - 猎卡回收公众号
  • 终于不怕OpenClaw烧token啦,直接算力自由~ - jiajia2026
  • Allegro实战:DDR4高速PCB布局布线避坑指南(附阻抗计算技巧)
  • OpenClaw一战封神,给大家分享6种官方不会告诉你的神级技巧。 - jiajia2026
  • 深度优化RK3588启动速度:uboot镜像合成脚本的3个高级配置技巧
  • 2026年企微客服热线电话,快速解决使用问题的正规联系渠道 - 品牌2026
  • 看完就会:9个AI论文网站深度测评,MBA毕业论文写作全攻略
  • 2026年中国营销管理咨询公司权威榜单发布:十大机构实战能力深度排位赛 - 品牌推荐
  • ESP8684-WROOM-01C硬件深度解析与低功耗工程实践
  • SCAU期末实战 - Linux系统应用与开发高频考点精讲(2024版)
  • 汕头海边婚纱照优质机构推荐:汕头旅拍/汕头森系婚纱照/汕头海边婚纱照/汕头街拍婚纱照/澄海婚纱照/金平婚纱摄影/选择指南 - 优质品牌商家
  • 2026年用户口碑最佳的中国留学生求职机构推荐:五家真实服务体验全面解析 海归就业竞争加剧: - 品牌推荐
  • 天津学生党选雅思机构避坑指南|不看广告看数据,实测体验 - 大喷菇123
  • 数据仓库实战:ODS层数据零点漂移的三大应对策略
  • 2026绵阳专业保姆服务品牌推荐指南 重售后保障 - 优质品牌商家
  • MPICH 3.4.2安装避坑指南:从下载到配置的完整流程(附常见错误解决方案)