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

如何建设网站挣钱做网站登录的需求分析

如何建设网站挣钱,做网站登录的需求分析,微信官网手机版,亿唐网不做网站做品牌考试题场景#xff1a;当处理一些请求时#xff0c;会重复的对数据库的某些字段进行赋值#xff08;如#xff1a;在插入和更新某个物品时#xff0c;需要更新该物品的更新时间和更新者的信息#xff09;#xff0c;这样会导致代码冗余。 如#xff1a; 思路#xff1a; 自…场景当处理一些请求时会重复的对数据库的某些字段进行赋值如在插入和更新某个物品时需要更新该物品的更新时间和更新者的信息这样会导致代码冗余。 如 思路 自定义注解 AutoFill用于标识需要进行公共字段自动填充的方法自定义切面类 AutoFillAspect统一拦截加入了 AutoFill 注解的方法通过反射为公共字段赋值在 Mapper 的方法上加入 AutoFill 注解 实现 定义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;/*** ClassName: AufoFill* PackageName: com.sky.Annotation* Description: 用于表示某个方法需要进行功能字段自动填充处理** Author Xiyan Zhong* Create 2023/12/18 下午2:55* Version 1.0*/ Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) public interface AutoFill {// 数据库操作类型UPDATE INSERTOperationType value(); } 实现切面类 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 org.aspectj.lang.JoinPoint; import org.aspectj.lang.Signature; 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;/*** ClassName: AutoFillAspect* PackageName: com.sky.Aspect* Description:自定义切面实现公共字段自动填充逻辑** Author Xiyan Zhong* Create 2023/12/18 下午3:00* Version 1.0*/Aspect Component 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(); // 方法签名对象AutoFill annotation signature.getMethod().getAnnotation(AutoFill.class);// 获取方法上的注解对象OperationType operationType annotation.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) {e.printStackTrace();}} else if (operationType OperationType.UPDATE) {try {// 为2个公共字段赋值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){e.printStackTrace();}}} } 需要注意的是在反射中获取方法名时和判断拦截方法的类型时分别采用的是常量和枚举而不是直接使用方法的字符串名称这样可以降低编码时的错误率也更加规范对应的代码 package com.sky.constant;/*** 公共字段自动填充相关常量*/ public class AutoFillConstant {/*** 实体类中的方法名称*/public static final String SET_CREATE_TIME setCreateTime;public static final String SET_UPDATE_TIME setUpdateTime;public static final String SET_CREATE_USER setCreateUser;public static final String SET_UPDATE_USER setUpdateUser; } /*** 数据库操作类型*/ package com.sky.enumeration;/*** 数据库操作类型*/ public enum OperationType {/*** 更新操作*/UPDATE,/*** 插入操作*/INSERT} 在Mapper对应的方法中添加注解AutoFill /*** 插入数据* param category*/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}))AutoFill(OperationType.INSERT)void insert(Category category);/*** 根据id修改分类* param category*/AutoFill(OperationType.UPDATE)void update(Category category); 删除对应的服务实现类的赋值操作。
http://www.zqtcl.cn/news/603724/

相关文章:

  • 域名购买网站网店装修是什么
  • wordpress 网站备份为什么企业要建设自己的企业文化
  • 想做一个部门的网站怎么做潍坊网站建设价
  • 网站建设公司的公司哪家好什么行业必须做网站
  • 电子商务网站前台设计wordpress 上传文件大小
  • 深圳市住房和城乡建设局网站非常好的资讯网站设计
  • 长春作网站建设的公司国家建设环保局网站
  • 网站开发的有哪些好的软件wordpress菜单栏的函数调用
  • 家庭清洁东莞网站建设技术支持建筑模板厂投资多少钱
  • 郑州企业建站详情网站开发和网页开发有什么区别
  • 山西古建筑网站个人网站可以做自媒体吗
  • 腾讯云服务器可以做网站wordpress中文正式版
  • 做相亲网站赚钱吗vultr部署wordpress
  • 网站被挂马原因做网站较好的框架
  • 网站开发毕业设计参考文献自考大型网站开发工具
  • p2p网站建设方案策划书黄山旅游攻略冬季
  • 最世网络建设网站可以吗小说网站制作开源
  • 广州网站建设知名 乐云践新网页界面制作
  • 沈阳网站哪家公司做的好招标信息发布
  • 兰州企业网站h5页面用什么软件
  • 东莞自助建站软件ppt怎么做 pc下载网站
  • 兴化网站建设价格怎样用自己的电脑,做网站
  • 东莞网站建设企慕网站名称 注册
  • 佛山网站建设服务商百度推广客户端手机版下载
  • 做网站找个人还是找公司wordpress jiathis
  • 淘宝客推广网站建设百度云wordpress转服务器
  • 网站构建代码模板怎么在云服务器上建设网站
  • 国内产品网站建设游戏创造器
  • 北京南站到北京站怎么走南宁美丽南方官方网站建设意见
  • 网站建设捌金手指专业5电商运营怎么推广一个新品