当前位置: 首页 > wzjs >正文

那个网站可以做雪花特效360网址大全

那个网站可以做雪花特效,360网址大全,做电影下载网站需要什么软件好,WordPress搜狗不收录1.问题分析 业务表中的公共字段: 问题:代码冗余、不便于后期维护 2.实现思路 自定义注解AutoFill,用于标识需要进行公共字段填充的方法 自定义切面类AutoFillAspect,统一拦截加入了AutoFill注解的方法,通过反射为公…

1.问题分析

业务表中的公共字段:

问题:代码冗余、不便于后期维护

2.实现思路

自定义注解AutoFill,用于标识需要进行公共字段填充的方法

自定义切面类AutoFillAspect,统一拦截加入了AutoFill注解的方法,通过反射为公共字段赋值

在Mapper的方法上加入AutoFill注解

技术:枚举、注解、AOP、反射

3.代码开发

AutoFill类代码:

package com.sky.annotation;import com.sky.enumeration.OperationType;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** 自定义注解,用于标识某个方法需要进行功能字段自动填充处理*/
@Target(ElementType.METHOD)//指定当前这个注解加在什么位置,指定只能加在方法上面
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoFill {//数据库操作类型:UPDATE INSERTOperationType value();//枚举类型
}

AutoFillAspect类代码:

package com.sky.aspect;import com.sky.annotation.AutoFill;
import com.sky.constant.AutoFillConstant;
import com.sky.context.BaseContext;
import com.sky.enumeration.OperationType;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.aopalliance.intercept.Joinpoint;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;import java.lang.reflect.Method;
import java.time.LocalDateTime;/*** 自定义切面,实现公共字段自动填充处理逻辑*/
@Aspect//指定为切面类
@Component//将类交给Spring容器管理
@Slf4j
public class AutoFillAspect {/*** 切入点*/@Pointcut("execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.annotation.AutoFill)")public void autoFillPointCut(){}/*** 前置通知,在通知中进行公告字段的赋值,要在方法执行前给类赋值,所以用前置通知*/@Before("autoFillPointCut()")//切入点public void autoFill(JoinPoint joinpoint){log.info("开始进行公共字段自动填充...");//获取到当前被拦截的方法上的数据库操作MethodSignature signature = (MethodSignature) joinpoint.getSignature();//方法签名对象,JoinPoint连接点对象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){try {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);} catch (Exception e) {throw new RuntimeException(e);}}else if(operationType == OperationType.UPDATE){try {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);} catch (Exception e) {throw new RuntimeException(e);}}}
}

需要在EmployeeMapper和CategoryMapper类中的insert和update方法上面加入

@AutoFill(value = OperationType.INSERT)和
@AutoFill(value = OperationType.UPDATE),然后在将EmployeeService和CategoryService中的公共字段添加值的部分注解掉
http://www.dtcms.com/wzjs/109798.html

相关文章:

  • 重庆市建设工程造价管理总站怎么让百度收录
  • 壮族自治区桂林疫情情况 最新消息seo教学实体培训班
  • seo网站优化论文浏览器打开是2345网址导航
  • 兰州网站关键字优化seo关键词优化培训
  • 12380网站建设总结免费顶级域名注册
  • 自己做片头的网站seo推广是什么
  • 设计网名字如何优化关键词的排名
  • 做h5找图网站seo论坛站长交流
  • 网文订阅做多的网站荨麻疹怎么治疗能除根
  • 无锡公司建立网站天津百度推广网络科技公司
  • 天津网站制作费用移动广告平台
  • 威海市城乡建设局网站广州专业seo公司
  • 1号网站建设 高端网站建设怎么让百度收录网址
  • 济南网站建设培训中国局势最新消息今天
  • 商标logo一键生成器sem和seo的区别
  • 如何知道网站什么时候做的在百度上怎么打广告
  • 珠海企业集团网站建设搜索引擎关键词怎么选
  • wordpress lofter主题泰安seo排名
  • 贺州做网站百度指数指的是什么
  • 昆明 五华 网站建设沈阳seo优化排名公司
  • 网站效果图用什么软件做专业搜索引擎seo技术公司
  • 深圳做网站那里好站长工具百度
  • wordpress网站名称函数杭州数据推广
  • 嘉兴建设教育网站培训中心网站网站推广软件哪个最好
  • 招聘网站做竞品分析农产品推广方案
  • 网站开发培训价格sem推广软件选哪家
  • b2c商城网站建设方案提供搜索引擎优化公司
  • 资源网站很难做杭州seo优化
  • 教育网站首页源代码产品营销方案策划书
  • 怎样能创建一个网站鼓楼网页seo搜索引擎优化