黑马苍穹外卖笔记day3

发布时间:2026/8/11 6:26:05
黑马苍穹外卖笔记day3 公共字段自动填充业务表中的公共字段create_time/create_user/update_time/update_user可以通过注解来实现当注解的方案实现了对应的操作类型时就对对应的公共字段进行填充自定义注解AutoFill用于标识需要进行公共字段自动填充的方法放在server/annotation文件夹下自定义切面类AutoFillAspect统一拦截加入了AutoFill注解的方法通过反射为公共字段赋值放在server/aspect文件夹下在Mapper的方法上加入AutoFill注解技术点枚举注解AOP反射当前JavaWeb还没学到AOP和注解的使用这部分有些东西听不懂1.在Common/enumeration文件夹中定义了一个枚举类OperationType用于标识当前方法的操作类型2.定义注解AutoFill用于标识某个Mapper方法需要更新公共字段属性value有Insert和Update3.定义切面类AutoFillAspect需要加Aspect注释使用PointCut注释来拦截指定的方法AOP知识并定义一个方法autoFill使用前置通知注释Before在通知中进行公共字段的赋值。4.在autoFill方法中通过形参joinPoint来获取方法签名并通过方法签名获取注释内容和操作类型并通过getArg()方法获取拦截的方法的形参列表约定形参列表第一个就是需要更改的对象object最后通过反射调用object的对应set方法进行公共字段的赋值新增菜品产品原型业务规则菜品名称必须是唯一的菜品必须属于某个分类下不能单独存在新增菜品时可以根据情况选择菜品的口味每个菜品必须对应一张图片接口设计文件上传接口设计新增菜品接口设计文件上传配置阿里云OSS并在controller文件夹下新建一个CommonController类用于文件的上传新增菜品新建一个DishController一个DishService和两个Mapper分别为DishMapper和DishFlavorMapper。由于一个菜品可能有多种口味在新增一个菜品时可能会向菜品口味表插入多条数据因此需要使用mybatis中的批量插入语句将一个list中的所有元素插入到菜品口味表中另外由于每个菜品口味都需要有一个对应的菜品id而前端不会在DishFlavor中传这个参数所以需要在Dish的属性中找到菜品id赋值给DishFlavor的对应对象然后才能正确插入。需要在DishMapper.xml文件中执行插入菜品操作后将主键保留下来用到useGeneratedKeys和KeyProperty两个属性分页查询菜品要实现根据菜品名称和分类id进行菜品查询的功能并且要返回菜品对应的分类名称。菜品对应的类DishDTO中没有分类名称所以需要定义一个视图类DishVO来将分类名称加入到属性中进行展示。所以在DishMapper类中分页查询菜品的函数返回的结果类型为PageDishVO在DishMapper.xml配置文件中对菜品进行分页查询的sql代码要将两个表进行连接查询用的是左外连接的方法mybatis代码如下由于dish和category的name字段名字重复所以要将category的name字段起一个别名叫categoryName对应的是DishVO的对应属性删除菜品业务规则可以一次删除一个菜品也可以批量删除菜品起售中的菜品不能删除被套餐关联的菜品不能删除删除菜品后关联的口味数据也需要删除掉

相关新闻