位置: IT常识 - 正文

瑞吉外卖项目:编辑员工信息与公共字段自动填充(瑞吉外卖项目简历)

编辑:rootadmin
瑞吉外卖项目:编辑员工信息与公共字段自动填充

目录

一. 编辑员工信息

1.1 需求分析

1.2 代码编写

执行流程

后端代码

二. 项目公共字段填充

2.1 问题分析

2.2 代码实现

2.3 功能完善


一. 编辑员工信息1.1 需求分析

推荐整理分享瑞吉外卖项目:编辑员工信息与公共字段自动填充(瑞吉外卖项目简历),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:瑞吉外卖项目怎么包装简历,瑞吉外卖项目选题说明,瑞吉外卖项目总结,瑞吉外卖项目,瑞吉外卖项目,瑞吉外卖项目,瑞吉外卖项目会被问什么,瑞吉外卖项目会被问什么,内容如对您有帮助,希望把文章链接给更多的朋友!

在员工管理列表点击编辑按钮,跳转至编辑页面后,回显员工数据进行修改。

请求URL:

http://localhost:8080/backend/page/member/add.hml?id=1519713809428660226

编辑页面使用的是添加页面,不一样的是编辑页面需要携带传递的参数ID去修改员工对象。 

1.2 代码编写执行流程

在开发代码之前需要梳理一下操作过程和对应的程序的执行流程:

点击编辑按钮时,页面跳转到add.html,并在url中携带参数员工ID在add.html页面获取url中的参数员工ID发送ajax请求,请求服务端,同时提交员工id参数服务端接收请求,根据员工id查询员工信息,将员工信息以ison形式响应给页面页面接收服务端响应的ison数据,通过VUE的数据绑定进行员工信息回显点击保存按钮,发送aiax请求,将页面中的员工信息以ison方式提交给服务端服务端接收员工信息,并进行处理,完成后给页面响应页面接收到服务端响应信息后进行相应处理后端代码

EmployeeController

/** * 根据ID查询员工信息 * @param id * @return */@GetMapping("/{id}")public R<Employee> getById(@PathVariable Long id){ log.info("根据ID查询员工信息"); Employee employee = employeeService.getById(id); return R.success(employee);}二. 项目公共字段填充2.1 问题分析

新增员工时需要设置时间,创建人,修改时间,修改人等字段,在编辑员工的时候也要设置这些字段,这些属于公共的字段可以使用MybatisPlus提供的公共字段填充功能,避免代码重复:

2.2 代码实现瑞吉外卖项目:编辑员工信息与公共字段自动填充(瑞吉外卖项目简历)

实现步骤:

实体类的属性上加入@TableField注解,指定自动填充的策略按照框架编写元数据对象处理器,同一字段赋值,实现MetaObjectHandler接口

MyMetaObjecthandler.java

package com.itheima.reggie.common;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.reflection.MetaObject;import org.springframework.stereotype.Component;import java.time.LocalDateTime;/** * 自定义元数据对象处理器 */@Component@Slf4jpublic class MyMetaObjecthandler implements MetaObjectHandler { /** * 插入操作,自动填充 * @param metaObject */ @Override public void insertFill(MetaObject metaObject) { log.info("公共字段自动填充[insert]..."); log.info(metaObject.toString()); metaObject.setValue("createTime", LocalDateTime.now()); metaObject.setValue("updateTime",LocalDateTime.now()); metaObject.setValue("createUser", BaseContext.getCurrentId()); metaObject.setValue("updateUser", BaseContext.getCurrentId()); } /** * 更新操作,自动填充 * @param metaObject */ @Override public void updateFill(MetaObject metaObject) { log.info("公共字段自动填充[update]..."); log.info(metaObject.toString()); long id = Thread.currentThread().getId(); log.info("线程id为:{}",id); metaObject.setValue("updateTime",LocalDateTime.now()); metaObject.setValue("updateUser",BaseContext.getCurrentId()); }}2.3 功能完善

上面的代码还是有所欠缺,无法获得创建的用户和更新的用户导致程序报错,使用ThreadLocal可以解决无法获取session中的员工ID的问题。

当客户端发送的每次的Http请求,对应的服务器都会分配一个新的线程来处理,处理过程中下面的类所属方法都属于一个线程:

LoginCheckFilter的doFilter的方法EmployeeController的update方法MyMetaObjectHandler的updateFill方法

可以在上面的三个方法中分别加入下面代码(获取当前线程ID):

long id = Thread.currentThread().getId();log.info("线程id为:{}",id);

什么是ThreadLocal?

ThreadLocal并不是一个Thread,而是Thread的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。

ThreadLocal常用方法

public void set(Tvalue):设置当前线程的线程局部变量的值 public T get(): 返回当前线程所对应的线程局部变量的值 

我们可以在LoainCheckFilter的doFilter方法中获取当前登录用户id,并调用ThreadLocal的set方法来设置当前线程的线程局部变量的值用户ID,然后使用MyMetaObjectHandler的updateFill方法姥获取用户ID

具体实现步骤:

编写BaseContext工具类,基于ThreadLocal封装的工具类在LoginCheckFilter的doFilter方法中调用BaseContext来设置当前登录用户的id在MyMetaObjectHandler的方法中调用BaseContext获取登录用户的id

BaseContext.java

package com.itheima.reggie.common;/** * 基于ThreadLocal封装工具类,用户保存和获取当前登录用户id */public class BaseContext { private static ThreadLocal<Long> threadLocal = new ThreadLocal<>(); /** * 设置值 * @param id */ public static void setCurrentId(Long id){ threadLocal.set(id); } /** * 获取值 * @return */ public static Long getCurrentId(){ return threadLocal.get(); }}

LoginCheckFilter.java的doFilter方法中加入:

Long empId = (Long) request.getSession().getAttribute("employee");BaseContext.setCurrentId(empId);

改完之后,测试后功能与之前一样,说明无问题。

本文链接地址:https://www.jiuchutong.com/zhishi/298784.html 转载请保留说明!

上一篇:IntersectionObserver API详解(IntersectionObserver 翻译)

下一篇:Openlayers 快速上手教程(openlayers6教程)

  • 苹果13广角镜头怎么开(苹果13广角镜头怎么用)

    苹果13广角镜头怎么开(苹果13广角镜头怎么用)

  • 微信如何批量删除多个聊天窗口(微信如何批量删除账单)

    微信如何批量删除多个聊天窗口(微信如何批量删除账单)

  • 苹果12如何显示电池百分比(苹果12如何显示充电状态)

    苹果12如何显示电池百分比(苹果12如何显示充电状态)

  • 荣耀30青春版指纹解锁在哪个位置(荣耀30青春版指纹怎么设置)

    荣耀30青春版指纹解锁在哪个位置(荣耀30青春版指纹怎么设置)

  • 支付宝集五福最大红包是多少(支付宝集五福最高奖金获得者?)

    支付宝集五福最大红包是多少(支付宝集五福最高奖金获得者?)

  • 大数据分析的理论核心是什么算法(大数据分析的理论核心就是什么)

    大数据分析的理论核心是什么算法(大数据分析的理论核心就是什么)

  • 钉钉可以查看学生是否悬浮窗(钉钉可以查看学生是否玩游戏吗)

    钉钉可以查看学生是否悬浮窗(钉钉可以查看学生是否玩游戏吗)

  • 怎样私信已关注的人(怎样私信已关注的人手机上)

    怎样私信已关注的人(怎样私信已关注的人手机上)

  • 可以通过wifi知道浏览记录吗(可以通过wifi知道对方手机在干嘛的吗)

    可以通过wifi知道浏览记录吗(可以通过wifi知道对方手机在干嘛的吗)

  • airpods2序列号在哪里(airpods2序列号在充电仓右边)

    airpods2序列号在哪里(airpods2序列号在充电仓右边)

  • 手写文件怎么扫描成电子版(手写文件怎么扫描成电子版的软件)

    手写文件怎么扫描成电子版(手写文件怎么扫描成电子版的软件)

  • 微信网络代理设置 是什么意思(微信网络代理设置该开启还是关闭)

    微信网络代理设置 是什么意思(微信网络代理设置该开启还是关闭)

  • 5g手机进网试用是什么意思(5g手机进网试用什么意思)

    5g手机进网试用是什么意思(5g手机进网试用什么意思)

  • 笔记本电脑重置需要多长时间(笔记本电脑重置和恢复出厂设置)

    笔记本电脑重置需要多长时间(笔记本电脑重置和恢复出厂设置)

  • 淘宝网官方网址是多少(淘宝官方网址www)

    淘宝网官方网址是多少(淘宝官方网址www)

  • 微信视频删除了怎么恢复(微信视频删除了怎么恢复回来)

    微信视频删除了怎么恢复(微信视频删除了怎么恢复回来)

  • laas是怎样一种平台(laaspaassaas)

    laas是怎样一种平台(laaspaassaas)

  • 逆光照片怎么修复(逆光照片怎么修美图秀秀)

    逆光照片怎么修复(逆光照片怎么修美图秀秀)

  • 为什么快手的文字变成省略号(为什么快手的文案自己没有了)

    为什么快手的文字变成省略号(为什么快手的文案自己没有了)

  • 5g来了现在换手机亏吗(5g出来要换卡还是换手机)

    5g来了现在换手机亏吗(5g出来要换卡还是换手机)

  • x23怎么返回(x23手机怎么设置返回键)

    x23怎么返回(x23手机怎么设置返回键)

  • 数据湖和数据仓库的差别(数据湖和数据仓库hudi)

    数据湖和数据仓库的差别(数据湖和数据仓库hudi)

  • vivo手机广告怎么去除(vivo手机广告怎么设置)

    vivo手机广告怎么去除(vivo手机广告怎么设置)

  • 手机设置防火墙在哪里(手机设置防火墙对手机有影响吗)

    手机设置防火墙在哪里(手机设置防火墙对手机有影响吗)

  • 咸鱼收款什么时候到账(闲鱼收款几天到账)

    咸鱼收款什么时候到账(闲鱼收款几天到账)

  • 深度学习模型部署综述(ONNX/NCNN/OpenVINO/TensorRT)

    深度学习模型部署综述(ONNX/NCNN/OpenVINO/TensorRT)

  • Python如何利用动态属性处理JSON数据源(python 动态)

    Python如何利用动态属性处理JSON数据源(python 动态)

  • 出口退税申报系统安装路径
  • 应税劳务销售额怎么算
  • 唐朝的两税法是什么
  • 消费税的计算方法有哪三种
  • 典当行借款合同需交印花税吗
  • 个税年度汇算清缴截止时间
  • 减免税款借贷方表示
  • 企业里面不征税的发票能报销吗
  • 企业工程款发票税率是多少2021
  • 用固定资产投资怎么做账
  • 跨年度费用报销违反什么规定
  • 长期待摊费用可以抵扣吗
  • 物业公司转售电费怎么开票
  • 代别的公司付款怎么做账
  • 事业单位支付方式
  • 开出现金支票属于什么会计科目类别
  • 外币应收帐款汇兑损益现流附表
  • 企业间借款利息涉税处理
  • 一般纳税人花椒税率
  • 印花税的收取
  • 用友t3建新账
  • 其他法律依据
  • 外币折算差额怎么记账
  • 分支机构增值税汇总纳税怎么申报?
  • 出纳人员怎么进入会计
  • 苹果电脑如何提高网速
  • paypal授权书怎么填
  • linux sed -s
  • 发票支票区别
  • 长期借款利息和短期借款利息都应计入财务费用
  • thinkphp多模块
  • 应收账款怎么做会计分录
  • vue上传文件和后端upload
  • 赤狐,荷兰 (© Wim Weenink/Minden Pictures)
  • 民间非营利组织会计制度
  • php怎么传递参数
  • tensorboard作用
  • 个人出租车辆交税吗
  • 数据库管理框架
  • 谷歌浏览器无法安装
  • 5个 ChatGPT 功能,帮助你提升日常编码效率
  • sysctl命令配置主机名
  • 商品交换包括
  • 进项税转出能转回吗
  • 暂估入库成本结转处理低于实际成本怎么办
  • Sqlite 操作类代码
  • 企业合并财务报表论文
  • 增资扩股和股权转让一样吗
  • 股东以固定资产入股会计处理
  • 退回企业所得税的账务处理
  • 旅游发票可以做差旅费吗
  • 事业单位实收资本如何做账
  • 固定资产错记到费用了怎么办
  • 担保贷款中的特殊形式
  • 应付职工薪酬包括福利费吗
  • 企业负担的差旅费
  • 收付实现制下收入包括增值税吗
  • 延期支票可以撤回吗
  • windows7创建虚拟桌面
  • 安装win7系统需要注意什么
  • keyemain.exe是什么进程
  • win10安装更新
  • linux和windows关系
  • 2021年win10新系统版本
  • win7插u盘电脑没反应怎么回事
  • linux发布项目
  • skype登录不了一直转圈
  • 深入剖析kubernetes pdf
  • cocos2dx 3.2 Http网络连接,curl 库的介绍
  • xcode用法
  • angularjs常用总结
  • jquery设置宽高
  • android怎么学
  • python制作爬虫教程
  • javascript教程chm
  • pytho命名规则
  • jquery遍历json对象
  • js构造器constructor
  • 税务机关宣传
  • 电子发票查询官方
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设