位置: 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教程)

  • ip地址与网上的其他系统有冲突怎么办(ip地址与网络上的其他系统有冲突怎么解决)(ip地址和网址)

    ip地址与网上的其他系统有冲突怎么办(ip地址与网络上的其他系统有冲突怎么解决)(ip地址和网址)

  • realme gt neo2是曲面屏吗

    realme gt neo2是曲面屏吗

  • 美版airpods和国行有啥区别(airpods美版国行可以混用吗)

    美版airpods和国行有啥区别(airpods美版国行可以混用吗)

  • 联想m7655dhf打印机清零(联想m7655dhf打印机)

    联想m7655dhf打印机清零(联想m7655dhf打印机)

  • 建立一个计算机网络需要网络硬件设备和(建立计算机工作组)

    建立一个计算机网络需要网络硬件设备和(建立计算机工作组)

  • 手机wps输入数字变乱码(手机wps输入数字变成E)

    手机wps输入数字变乱码(手机wps输入数字变成E)

  • qq冻结七天只能等吗(qq冻结七天只能解冻吗)

    qq冻结七天只能等吗(qq冻结七天只能解冻吗)

  • 华为nova6支不支持红外功能(华为nova6支不支持扩展卡)

    华为nova6支不支持红外功能(华为nova6支不支持扩展卡)

  • 慕课网站有哪些(慕课网站有哪些类型)

    慕课网站有哪些(慕课网站有哪些类型)

  • 手机来电不显示号码是怎么回事(手机来电不显示来电屏幕)

    手机来电不显示号码是怎么回事(手机来电不显示来电屏幕)

  • vivoy27怎么设置来电图片(vivoy52s手机怎么设置)

    vivoy27怎么设置来电图片(vivoy52s手机怎么设置)

  • 天猫u先试用在哪申请(天猫u先试用在哪里找)

    天猫u先试用在哪申请(天猫u先试用在哪里找)

  • 怎么为正文添加编号(怎么为正文添加红色文本框)

    怎么为正文添加编号(怎么为正文添加红色文本框)

  • 显示未接通是被挂断电话吗(未接通原因)

    显示未接通是被挂断电话吗(未接通原因)

  • 阿里云计算是干嘛的(阿里的云计算有技术含量吗)

    阿里云计算是干嘛的(阿里的云计算有技术含量吗)

  • 卡贴不弹窗怎么办(卡贴不跳弹窗怎么弄)

    卡贴不弹窗怎么办(卡贴不跳弹窗怎么弄)

  • ps怎么反白(ps怎么反白字)

    ps怎么反白(ps怎么反白字)

  • 苹果airpods怎么挂电话(苹果airpods怎么和安卓手机配对)

    苹果airpods怎么挂电话(苹果airpods怎么和安卓手机配对)

  • excel撤回快捷键(excel怎么撤回操作快捷键)

    excel撤回快捷键(excel怎么撤回操作快捷键)

  • aux1是什么意思啊(auxr是什么意思啊)

    aux1是什么意思啊(auxr是什么意思啊)

  • 怎么关闭hd功能(红米手机怎么关闭hd功能)

    怎么关闭hd功能(红米手机怎么关闭hd功能)

  • wps表格怎么插一行(wps表格怎么插一行表格)

    wps表格怎么插一行(wps表格怎么插一行表格)

  • 【windows Server 2019系列】 构建IIS服务器(windowsserver2012r2远程协助灰色)

    【windows Server 2019系列】 构建IIS服务器(windowsserver2012r2远程协助灰色)

  • 做大屏的四款可视化工具(大屏制作教程视频)

    做大屏的四款可视化工具(大屏制作教程视频)

  • 怎么控制酒店的设备
  • 会计为什么要计折旧费
  • 建安企业个人所得税
  • 补入库存商品的会计分录
  • 非股东入资款会计分录怎么写?
  • 未计提坏账准备金额在哪个科目
  • 企业接受捐赠是营业收入吗
  • 旧设备变现损失抵减所得税怎么算
  • 建筑工程需要哪些部门审批
  • 个税申报与社保申报一定是一致的么
  • 所得税费用税率规定
  • 母公司向子公司收取管理费
  • 收入是零招待费怎么汇算
  • 小规模纳税人如何转一般纳税人
  • 私车公用报销怎么算
  • 华为p60pro上市时间是几月
  • cmd telnet命令大全
  • msconfig配置文件修改
  • 新浪怎么样了
  • 人际交往的作用是什么
  • 完税凭证遗失后还能用吗
  • 摊余成本计量的金融资产账面价值
  • php api
  • 用科目汇总表怎么登记总账
  • php中file
  • 宣泄不能消除不健康的情绪
  • 增值税加计扣除最新政策
  • 基建费用如何摊销
  • php转换器
  • uni-app--》uni-app的生命周期讲解
  • php读取数据输出html
  • 前端开发软件哪个最好
  • react错误处理
  • 固定资产多少钱以上才要计提折旧
  • 年终奖是以工资形式发放吗
  • 企业向个人借款利息如何缴纳增值税
  • 挂靠车辆进项税额是否可以抵扣
  • 一般计税和简易计税可以合并征税吗
  • Java连接sqlserver2008数据库代码
  • 体检费用需要缴哪些费用
  • 2023年终奖一次性扣税对照表
  • 转让无形资产使用权
  • 企业固定资产对应哪个科目
  • 应收账款和应付账款属于什么科目
  • 幼儿园会计做账流程
  • 企业购买商品房作为职工宿舍
  • 残疾人个人所得税扣除
  • 个人所得税要计入管理费用吗
  • 什么情况下说免贵
  • 工资薪酬所得税税率表最新
  • 装修费可以一次性入账吗
  • 土地使用权如何计入房产原值交房产税时间
  • 购买国家机关证件罪量刑标准
  • 法院主要业务活动
  • 明细分类账的建账
  • win7系统安全在哪
  • win10无法删除文件夹没有权限
  • 微软官方win10启动盘
  • win7安装office2010错误1935
  • Win10系统怎样把Word转成PDF
  • win8系统开机界面
  • mac 菜单
  • u盘制作winpe启动盘
  • 什么叫linux
  • 已停止工作win7
  • 双系统怎么转移文件
  • es6字符串模版
  • 生成器作用
  • Node.js中的全局对象有
  • javascript 语言精粹(修订版)
  • javascript高级程序设计第五版 pdf下载
  • 基于javascript的毕业设计
  • 安卓Android下载
  • python程序解析
  • 珠宝消费税怎么征收
  • 企业所得税报错了税款扣了可以改吗
  • uk开票软件如何赋码
  • 税务部门组织收入会议报道
  • 税收科研工作思路
  • 社保并入税务局的时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设