外卖学习第三天 39/200

发布时间:2026/10/11 3:37:37

外卖学习第三天 39/200 外卖学习第三天1、补充第二天的公共字段自动填充遗留下的问题/** * 切入点 * */Pointcut(execution(* com.sky.mapper.*.*(..)) annotation(com.sky.annotation.AutoFill))publicvoidautoFillPointCut(){}/** * 前置通知在通知中进行公共字段的赋值 * */Before(autoFillPointCut())publicvoidautoFill(JoinPointjoinPoint){log.info(开始进行公共字段填充.......);//获取到当前被拦截的方法上的数据库操作类型MethodSignaturesignature(MethodSignature)joinPoint.getSignature();//获取方法签名对象AutoFillautoFillsignature.getMethod().getAnnotation(AutoFill.class);//获得方法上的注解对象OperationTypeoperationTypeautoFill.value();//获得数据库操作类型//获取到当前被拦截的方法的参数---实体对象Object[]argsjoinPoint.getArgs();//获得方法参数if(argsnull||args.length0){return;}Objectentityargs[0];//准备赋值的数据LocalDateTimenowLocalDateTime.now();LongcurrentIdBaseContext.getCurrentId();//根据当前不同的操作类型为对应的属性通过反射来赋值if(operationTypeOperationType.INSERT){//为4个公共字段赋值try{MethodsetCreateTimeentity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_TIME,LocalDateTime.class);MethodsetCreateUserentity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_USER,Long.class);MethodsetUpdateTimeentity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME,LocalDateTime.class);MethodsetUpdateUserentity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER,Long.class);//通过反射为对象属性赋值setCreateTime.invoke(entity,now);setCreateUser.invoke(entity,currentId);setUpdateTime.invoke(entity,now);setUpdateUser.invoke(entity,currentId);}catch(Exceptione){thrownewRuntimeException(e);}}elseif(operationTypeOperationType.UPDATE){//为2个公共字段赋值try{//拿到对应的方法MethodsetUpdateTimeentity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME,LocalDateTime.class);MethodsetUpdateUserentity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER,Long.class);//通过反射为对象属性赋值setUpdateTime.invoke(entity,now);setUpdateUser.invoke(entity,currentId);}catch(Exceptione){thrownewRuntimeException(e);}}}2、文件上传后端接收前端传来的文件时要用参数MultiPartFile file来接收。file名称要与前端传来的保持一致。本地存储/** * 文件上传 * */PostMapping(/upload)publicResultupload(MultipartFilefile)throwsIOException{log.info(文件上传{},file);//获取原始文件名StringoriginalFilenamefile.getOriginalFilename();//新的文件名StringextensionoriginalFilename.substring(originalFilename.lastIndexOf(.));//首先拿到文件扩展名StringnewFileNameUUID.randomUUID().toString()extension;//保存文件到本地file.transferTo(newFile(D:/images/newFileName));returnResult.success();}注意上传内容过大时该怎样解决在yml文件中进行一个配置。servlet:multipart:#最大单个文件大小max-file-size:10MB#最大请求大小包括所有文件和表单数据max-request-size:100MB3、新增菜品动态SQL语句向口味表中插入数据insertidinsertBatchinsertintodish_flavor(dish_id,name,value)VALUESforeach collectionflavorsitemdfseparator,(#{df.dishId},#{df.name},#{df.value})/foreach/insert
延伸阅读

更多相关文章

2026/10/11 3:37:37

9轴IMU姿态解算:卡尔曼滤波算法设计与Matlab实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 3:32:36

噪声整形SAR ADC设计入门:从原理到实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 4:47:41

WorkBuddy_WorkBuddy概述17_深度研究与信息检索

深度研究与信息检索 摘要 在信息爆炸的时代,如何从海量数据中高效获取、筛选、整合有价值的信息,已经成为技术人员、产品经理、投资分析师乃至企业决策者的核心能力之一。本文将围绕"深度研究与信息检索"这一主题,系统讲解如何利用…

2026/10/11 4:47:41

教务管理系统JavaWeb项目实战:从数据库设计到Tomcat部署完整指南

简介:一套面向JavaWeb初学者的教务管理系统项目,基于J2EE技术体系,涵盖登录、找回密码、修改密码、注销等基础流程,并按学生、教师、教务员、系统管理员四类角色划分功能。学生端支持成绩查询、选修与考级报名、学籍信息维护及考级…

2026/10/11 4:47:41

从 Scratch 到 Python:什么信号说明孩子可以「升舱」了

路线图文和 Scratch 正名篇里各出现过一句话:「孩子开始嫌积木表达不了他想做的事,就该走了」。这句听着有道理,但怎么判断?等孩子亲口说吗?万一他一直不说呢?这篇就把它展开成一份可操作的观察清单。转段这个决定,前摇太长会磨掉兴趣,太短会摔进语法坑——信号看准了,过渡期…

2026/10/11 4:47:41

WorkBuddy_WorkBuddy概述16_PPT与演示文稿制作

PPT与演示文稿制作 摘要 在当今快节奏的工作环境中,制作演示文稿已经成为职场人士的日常任务之一。然而,从需求描述到最终生成一份精美的、可编辑的PPT,往往需要耗费大量时间和精力。本文将深入探讨如何利用现代技术手段,实现从自…

2026/10/11 4:47:41

年会策划省钱又出效果:4个低成本高人气互动玩法全解析

年会策划一到年底就成了行政和HR朋友们的心头大事:预算就那么多,老板要求却不低,要高人气、有互动、能落地,最好还能省预算又出效果。我做活动策划这些年,经手过大大小小不少年会,发现真正让全场沸腾的&…

2026/10/11 4:42:41

机器学习入门指南:核心算法、复杂度与落地场景全解析

如果你点进这篇文章,大概率和我当年一样,被“机器学习”这四个字吓住过。我做了好几年机器学习相关的工作,带过不少零基础的朋友(甚至真有一位“太奶”级别的长辈问我:这玩意儿是不是跟算命差不多)&#xf…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑