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

成都网站制作百度指数官网查询

成都网站制作,百度指数官网查询,小公司做网站需要什么条件,安徽省住房和城乡建设工程信息网问题分析 总会有些公共字段,例如创建时间和创建人 实现思路 对mapper定义注解,使用切面思想来判断是不是更新和新增操作对于指定的操作来更新公共字段 自定义操作类型 package com.sky.enumeration;/*** 数据库操作类型*/ public enum OperationType {/*…

问题分析

  • 总会有些公共字段,例如创建时间和创建人

在这里插入图片描述

实现思路

  • 对mapper定义注解,使用切面思想来判断是不是更新和新增操作
  • 对于指定的操作来更新公共字段

在这里插入图片描述

自定义操作类型

在这里插入图片描述

package com.sky.enumeration;/*** 数据库操作类型*/
public enum OperationType {/*** 更新操作*/UPDATE,/*** 插入操作*/INSERT}

自定义注解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 {OperationType value();
}

自定义切面

  1. 定义切点
  2. 获取当前的mapper方法的具体操作类型
  3. 获取当前的mapper方法的参数 实体对象entity
  4. 获取要填充的数据
  5. 根据操作类型进行填充
package com.sky.aspect;import cn.hutool.core.util.ObjectUtil;
import com.sky.annotation.AutoFill;
import com.sky.context.BaseContext;
import com.sky.enumeration.OperationType;
import com.sky.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
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.time.LocalDateTime;import static com.sky.constant.AutoFillConstant.*;
import static com.sky.constant.MessageConstant.AUTO_FILL_FAILED;/*** 自动填充切面*/
@Aspect
@Component
@Slf4j
public class AutoFillAspect {// 切入点// mapper包下的所有方法 所有的参数类型@Pointcut("execution(* com.sky.mapper..*.*(..)) && @annotation(com.sky.annotation.AutoFill)")public void autoFillPointCut() {}// 前置通知 在方法执行之前执行// 进行自动填充@Before("autoFillPointCut()")public void before(JoinPoint joinPoint) {log.info("自动填充切面执行");// 获取当前的mapper方法的具体操作类型MethodSignature methodSignature = (MethodSignature)joinPoint.getSignature();OperationType operationType = methodSignature.getMethod().getAnnotation(AutoFill.class).value();// 获取当前的mapper方法的参数 实体对象entityObject[] args = joinPoint.getArgs();//非空判断if(ObjectUtil.isEmpty(args)) return;// 获取实体对象Object entity = args[0];// 获取要填充的数据// 获取当前登录用户的信息Long currentUserId = BaseContext.getCurrentId();// 获取当前时间LocalDateTime now = LocalDateTime.now();// 根据操作类型进行填充switch (operationType) {case INSERT:// 插入操作try {entity.getClass().getMethod(SET_CREATE_USER, Long.class).invoke(entity, currentUserId);entity.getClass().getMethod(SET_UPDATE_USER, Long.class).invoke(entity, currentUserId);entity.getClass().getMethod(SET_CREATE_TIME, LocalDateTime.class).invoke(entity, now);entity.getClass().getMethod(SET_UPDATE_TIME, LocalDateTime.class).invoke(entity, now);} catch (Exception e) {log.error(AUTO_FILL_FAILED, e);throw new BaseException(AUTO_FILL_FAILED);}break;case UPDATE:// 更新操作try {entity.getClass().getMethod(SET_UPDATE_USER, Long.class).invoke(entity, currentUserId);entity.getClass().getMethod(SET_UPDATE_TIME, LocalDateTime.class).invoke(entity, now);} catch (Exception e) {log.error(AUTO_FILL_FAILED, e);throw new BaseException(AUTO_FILL_FAILED);}break;default:break;}}
}

使用

    @AutoFill(OperationType.UPDATE)void update(Category category);
    @AutoFill(OperationType.INSERT)@Insert("insert into category(type, name, sort, status, create_time, update_time, create_user, update_user)" +" VALUES" +" (#{type}, #{name}, #{sort}, #{status}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser})")void insert(Category category);
http://www.dinnco.com/news/56596.html

相关文章:

  • 日本女做网站百度网站流量统计
  • 0元建设黑网站网上营销怎么做
  • 网站域名在哪里注册效果好的关键词如何优化
  • 福建漳州网站建设费用小企业广告投放平台
  • 上饶网站网站建设镇江搜索优化技巧
  • 易语言做网站后端谷歌排名优化
  • 个人商城杭州seo外包服务
  • 六安公司做网站网络推广公司北京
  • 做网站的技术岗位有哪些搜索引擎营销的主要方法
  • 做药物研发的人上什么网站品牌网站建设哪家好
  • seo每日一贴许昌seo公司
  • 广州番禺专业做网站网店运营策划方案
  • 广州 天河网站设计小江seo
  • 做简易网站的APP安徽网站开发哪家好
  • 网络营销渠道类型有哪些灯塔seo
  • 手机wap网站 源码百度搜索排名查询
  • 如何做自己的视频网站微信营销的方法有哪些
  • 日本javaappaso排名优化
  • 网站建设响应式重要新闻今天8条新闻
  • 网站优化 前端怎么做优化网站seo方案
  • 建设网站的情况说明书厦门seo报价
  • 以前在线做预算的网站网站权重是什么意思
  • 毕业设计用PHP做旅游网站百度竞价调价软件
  • 凡科代理建站登录网络推广专员岗位职责
  • 湘潭做网站价格问下磐石网络策划书模板
  • 建立个人网站费用网络营销策略理论有哪些
  • 郑州小型网站制作公司资源企业网站排名优化价格
  • 提供东莞微信网站建设站长统计app软件下载官网安卓
  • 网站后台怎么站长之家查询域名
  • 重庆一品建设集团有限公司网站sem培训班学费哪个好