首页 > 其他分享 >苍穹外卖项目

苍穹外卖项目

时间:2024-09-30 20:21:21浏览次数:11  
标签:getClass invoke 项目 entity getDeclaredMethod 外卖 now 苍穹 class

https://gitee.com/wu-zhezhe/sky-delivery.git

今天设置的是公共字段填充配置

这不属于业务的开发

employee.setUpdateTime(LocalDateTime.now());
employee.setUpdateUser(BaseContext.getCurrentId());

这里是配置员工信息等到菜品信息还会有菜品信息我们可以设置一个公共的字段填充类来专门负责这些字段的修改

新建annotation包和注解文件

@Target(ElementType.METHOD) //表示这个注解可以应用于方法上。

@Retention(RetentionPolicy.RUNTIME) //表示这个注解在运行时是可访问的。

public @interface AutoFill {

     // 操作类型,用于指定自动填充的具体行为。

    OperationType value();

}

新建切入点
/**
 * 切入点
 *
 * */
@Pointcut("execution(* com.sky.mapper.*.*(..)) 121212&&@annotation(com.sky.annotation.AutoFill)")
public void autoFillPointCut(){



}
@Before("autoFillPointCut()") //拦截前执行
public void autoFill(JoinPoint joinPoint) throws Exception {

        //获取拦截的数据库的操作类型
           MethodSignature signature= (MethodSignature) joinPoint.getSignature();//获取方法签名
           AutoFill  autoFill=   signature.getMethod().getAnnotation(AutoFill.class);//获取方法的注解对象
           OperationType operationType=autoFill.value();
        //获取当前被拦截的实体对象
      Object[] args =joinPoint.getArgs();
        if (args ==null||args.length==0){

            return;
        }

        Object entity=args[0];
        //准备赋值的数据
       LocalDateTime now=LocalDateTime.now();
       Long currentId= BaseContext.getCurrentId();
        //根据当前不同的类型赋值
        if (operationType==OperationType.INSERT){

            //为四个公共字段赋值
          Method setCreateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_TIME, LocalDateTime.class);
            Method setCreateUser=entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_USER,Long.class);
           Method setUpdateTime=entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);
            Method setUpdateUser=entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER,Long.class);
            //通过反射为对象赋值
            setCreateTime.invoke(entity,now);
            setCreateUser.invoke(entity,currentId);
            setUpdateTime.invoke(entity,now);
            setUpdateUser.invoke(entity,currentId);
        }else if(operationType==OperationType.UPDATE){

            Method setUpdateTime=entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);
            Method setUpdateUser=entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER,Long.class);

            //通过反射为对象赋值
            setUpdateTime.invoke(entity,now);
            setUpdateUser.invoke(entity,currentId);
        }

    }
}

配置好了这个切面类

在Mapper层设置

@AutoFill(value = OperationType.INSERT)

标签:getClass,invoke,项目,entity,getDeclaredMethod,外卖,now,苍穹,class
From: https://blog.csdn.net/2302_79804180/article/details/142663047

相关文章

  • 项目部署一:前期准备(本地上传、gitignore、ssh连接、密钥)
    项目部署想要将django项目部署在服务器上,本质上需要三大部分:将代码上传到服务器在服务器上获取代码、安装服务、配置环境启动服务1.代码同步上传代码的方式有很多种,例如:FTP工具、scp命令、rsync服务、svn等,不过目前公司主流的都是使用git+代码托管平台。本地电脑,安装......
  • AutoJsPro项目脚本合集(附带全套源码,线程不会的看过来)
    话不多说,直接上代码"ui";letKeepAliveService={/**开启*/start:function(idStr,nameStr){try{idStr=idStr||"";letchannel_id=idStr+".foreground";letchannel_name=nameStr+"前台服务通知&q......
  • idea2023-快速搭建一个本地tomcat的javaWeb项目(从0到1保姆教学)
    前言如何在新版idea中搭建一个javaWeb项目,并且应用在物理的tomcat中,本文将进行从零到一,完成搭建步骤,以及相关注意事项的讲解。为什么需要配置tomcat?我们开发的javaWeb项目,最后都需要打包部署到真正的物理tomcat上发布运行;在开发阶段,我们想要测试javaWeb项目,除了使用maven......
  • 某大型国有钢铁企业员工退出机制设计咨询项目
    某大型国有钢铁企业员工退出机制设计咨询项目——完善员工退出政策,优化人力资源结构引言:作为一家国有企业,F公司目前员工年龄结构偏大,工作缺乏积极性,“等、靠、要”的思想较重。这种传统的管理思想不利于优化人力资源结构,激活员工活力和积极性。华恒智信入驻企业后为企业完善......
  • Qt项目中,在main.cpp中定义了一个自定义组件,但是在编译的时候报错`undefined reference
    1、问题描述我在测试Qt项目的main.cpp中编写了如下代码:classMyWidget1:publicQWidget{Q_OBJECT};//main程序入口argc命令行变量的数量argv命令行变量的数组intmain(intargc,char*argv[]){//应用程序对象,在Qt中应用程序对象有且仅有一个QAppl......
  • Django项目实战:创建和迁移数据库
    Django项目实战:创建和迁移数据库一、配置数据库Django默认使用SQLite数据库,但你也可以选择其他数据库如MySQL、PostgreSQL等。在./settings.py文件中,你可以找到DATABASES配置,并根据需要进行修改。#数据库配置DATABASES={'default':{'ENGINE':'django.db.ba......
  • 基于python+flask框架的软件工程类课程实验项目管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的快速发展,软件工程类课程在实验教学中的地位日益凸显。这类课程不仅要求学生掌握理论知识,更强调实践操作和项目开发能力。然......
  • 共享型云服务器和独立计算型云服务器有什么区别?项目开发中如何选择
    一、主要区别资源分配与性能共享型云服务器:采用多租户模式,多个用户共享同一个服务器上的计算、存储和网络资源。这些资源通过虚拟化技术进行池化,并按需分配给各个用户。在高负载时,不同实例的vCPU可能会争抢物理CPU资源,这可能导致计算性能的波动和不稳定。独立计算型云服务器......
  • Spring Boot项目 application.yml 配置赋值到 Java配置类中
    SpringBoot项目 application.yml 配置赋值到Java配置类中application.ymlsdkConfig:#是否为测试环境(true=是;false=否)isDevEnv:falseSdkConfig.javaimportorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Comp......
  • IDEA 2024将Java项目(module)打成JAR包
    说明:标题中所说的项目在IDEA中被称为Module(模块),这里实际上是要将IDEA中的建立的Module打成JAR包。目标:将module打包为JAR文件,随后在另一Module中导入并使用该JAR包。流程:新建chpt03与test两个Module,在chpt03中编写Person类文件并成功测试,然后尝试在test模块中导入并使用Person......