黑马程序员苍穹外卖(新手) DAY3

作者:烤麻辣烫日期:2025/11/19

公共字段自动填充

问题:代码冗余,不便于后期维护
自定义注解AutoFill,用于标识需要需要进行公共字段填充的方法

自定义切面AutoFillAspect,统一拦截加入了AutoFill注解的方法, 通过反射为公共字段赋值

在Mapper的方法上加入AutoFill注解

serviceImpl

技术点:枚举,注解,AOP,反射

新增菜品

文件上传

yml

dev-yml

OssConfiguration

CommonController

无法显示图片需要在阿里云上设置公共读

新增菜品

Dishcontroller

Dishservice

Dishcontroller

DishServiceImpl

DishMapper

DishMapper.xml

DishServiceImpl

DishFlavorMapper

DishServiceMapper

DishFlavorMapper

DishFlavorMapper.xml

DishServiceImpl

DishMapper

DishServiceImpl

功能测试

菜品分页查询

Discotroller

DishService

DishServiceImpl

删除菜品

代码实现

DishController

判断菜品是否能够删除

DishServiceImpl

DishMapper

DishServiceImpl

当前菜品是否被套餐关联

SetMealDishMapper

DishServiceImpl

SetMealDishMapper.xml

删除菜品表中菜品数据

DishServiceImpl

DishMapper

删除关联的口味数据

DishServiceMapper

DishMapper

修改菜品

代码开发

DishController

DishService

跟据id查询菜品数据

DishServiceImpl

根据菜品id查询口味

DishServiceImpl

DishFlavorMapper

将查询到的数据封装到VO

DishServiceImpl

修改

DishCotroller

DishService

修改菜品表基本信息

DishServiceImpl

DishMapper

DishMapper.xml

删除原有的口味数据

DishServiceImpl

重新插入口味数据

DishServiceImpl


黑马程序员苍穹外卖(新手) DAY3》 是转载文章,点击查看原文


相关推荐


如何用Claude Code构建公司:三家YC初创公司的案例研究
是魔丸啊2025/11/18

转载 日期:2025年11月17日 阅读时间:5分钟 Y Combinator是一家创业加速器,自2005年以来已经孵化了超过5000家公司,这些公司的总估值超过8000亿美元,包括Airbnb、Stripe和DoorDash等知名企业。 如今,像Claude Code这样的agent编码工具正在从根本上改变YC初创公司构建和扩展的方式。创始人现在可以直接从终端发布产品,将开发周期从几周压缩到几小时,甚至让非技术创始人从第一天起就能与成熟企业竞争。 我们采访了三家展示这一变革实践的YC初创公司:


Python 的内置函数 staticmethod
IMPYLH2025/11/17

Python 内建函数列表 > Python 的内置函数 staticmethod Python 的内置函数 staticmethod 用于将一个方法转换为静态方法。静态方法不需要隐式地传递任何参数(如 self 或 cls),它们与普通函数类似,但属于类的命名空间。 使用方法 定义静态方法:在类中使用 @staticmethod 装饰器来定义静态方法。 class MyClass: @staticmethod def static_method(arg1, arg2):


ArrayUtils:Java数组操作的瑞士军刀
白衣鸽子2025/11/16

1. 前言 本文介绍的 ArrayUtils 以org.apache.commons.collections4.ArrayUtils 为例 源代码:org.apache.commons.collections4.ArrayUtils 自定义特征可以在自己服务内实现 在Java应用开发中,数组操作是我们日常编码的基础任务之一。你是否曾写过下面这样的代码? public boolean findUser(String[] users, String targetUser) { if (u


一文搞懂 AI 流式响应
只想写个小玩意2025/11/15

这是 OpenAI 文档中流式响应的代码 platform.openai.com/docs/guides… import { OpenAI } from "openai"; const client = new OpenAI(); const stream = await client.responses.create({ model: "gpt-5", input: [ { role: "user", conte


TRAE SOLO推出1天啦,限免到15号,你还没体验吗
也无风雨也雾晴2025/11/13

Trae SOLO模式已经正式推出一天了 点击左上角的logo,就可以切换solo模式了,切换后的ide布局非常的酷炫,有两个模式 coder:可以用来改bug,写需求这些 builder:适合从0到1的开发,从生成prd开始到构建完整项目,而且trae还提供了便捷部署到vercel可以线上访问的集成 但是没有模型相关的选择,内置进去了,没有暴露出来给用户去选择 我试了一下使用coder改bug,plan模式下提出需求或者bug,会先生成文档,你可以根据文档再次确认需求,没问题后开始实施,这


一文看懂 Agentic AI:搭建单体 vs 多智能体系统,结果出乎意料!
玩转AGI2025/11/12

一文看懂 Agentic AI:搭建单体 vs 多智能体系统,结果出乎意料! 最近,我开始尝试构建不同类型的 Agentic AI 系统,最让我着迷的,是“单智能体(Single-Agent)”和“多智能体(Multi-Agent)”的差异。【AI大模型教程】 说实话,在没真正动手之前,我也只是听过这些概念,觉得听起来很玄。直到我用 LangGraph 和 LangSmith Studio 亲自搭建了两个版本,一个“单兵作战”,一个“多智能体协作”,结果真的让我彻底改观。 我想造一个能帮我追踪


Guava 迭代器增强类介绍
桦说编程2025/11/10

Guava 库为 Java 开发者提供了一系列强大的迭代器增强工具,它们简化了复杂迭代模式的实现。本文将深入探讨 Guava 的 PeekingIterator、AbstractIterator 和 AbstractSequentialIterator。 1. PeekingIterator:洞察先机 标准的 Iterator 接口仅提供 hasNext() 和 next() 方法,这在某些场景下显得力不从心。当需要“预读”下一个元素以做出决策,但又不想立即消耗它时,PeekingIterato


🍎 Electron 桌面端应用合法性问题全流程解决指南(新手友好版)
去码头整点薯片2025/11/8

本文目标:帮助你把本地的 Electron 应用打包成 macOS 的 .dmg,并做到打开不再被 Gatekeeper 拦截(不再提示“来自身份不明的开发者/无法验证是否含有恶意软件”)。 适用对象:个人开发者 & 小团队。 🧩 一、问题场景 当你满心欢喜地将精心开发的 Electron 应用打包分发给用户,却接到反馈:在 macOS 上无法打开,系统弹窗冷冰冰地提示“无法验证开发者”,文件被直接移入废纸篓。 如果这个场景让你感同身受,那么你正遭遇 macOS 强大的 Gatekeepe


Python 的内置函数 globals
IMPYLH2025/11/6

Python 内建函数列表 > Python 的内置函数 globals Python 的内置函数 globals() 是一个非常重要的工具函数,它返回一个字典,表示当前全局符号表。这个字典包含了当前模块中定义的所有全局变量、函数和类的名称及其对应的值。 def globals(): ''' 返回实现当前模块命名空间的字典 :return: 当前模块命名空间的字典 ''' 具体来说: 返回值是一个字典对象字典的键是变量名或函数名(字符串形式)字典的值是


Python 的内置函数 filter
IMPYLH2025/11/1

Python 内建函数列表 > Python 的内置函数 eval Python 的内建函数 filter() 是一个非常有用的高阶函数,它用于对可迭代对象进行筛选过滤。它的基本工作原理是根据指定的函数条件,从输入的可迭代对象中筛选出符合条件的元素,返回一个迭代器对象。 def filter(fn, iterable): ''' 过滤数据 :param fn: 回调函数,返回 True 是元素保留,返回 False 时元素去除 :param iterable

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读