公共字段自动填充aop

在项目开发中,我们的数据库设计往往会包括创建人、创建时间、修改人、修改时间等公共字段,这些公共字段有助于帮助我们知道是谁对数据库记录进行了更改,但这带来的一个问题就是在进行数据库插入或修改的时候,这些字段需要手动设置,这会给我们带来很大不便,这里我简单讲一下采用aop方式进行公共字段填充,因为项目集成了tk.mybatis,很多单表的操作并没有显示指定接口,所以采用在service层方法进行切入来...
摘要由CSDN通过智能技术生成

在项目开发中,我们的数据库设计往往会包括创建人、创建时间、修改人、修改时间等公共字段,这些公共字段有助于帮助我们知道是谁对数据库记录进行了更改,但这带来的一个问题就是在进行数据库插入或修改的时候,这些字段需要手动设置,这会给我们带来很大不便,这里我简单讲一下采用aop方式进行公共字段填充,因为项目集成了tk.mybatis,很多单表的操作并没有显示指定接口,所以采用在service层方法进行切入来设置。以下列出用到的类,做一个思路的梳理,具体应用可自行更改。

 

 

其中SetCommonField是一个注解,该注解打在方法上即可启用aop,该注解包含一个methodType属性,这个属性定义数据库的四种操作(增删改查),在CommonFieldAspect类中定义了对应的常量。

功能实现思路是解析前端请求得出用户id(这里我的代码有点问题,各位可自行考虑怎么获取用户id),然后根据用户id查询redis缓存得到用户信息保存到UserInfo,然后再根据不同的methodType将userInfo转换为CommonField,最后我们读取切点方法的第一个参数,并将其与CommonField类同名的字段进行设置。

 



import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * aop设置公共字段增强处理注解
 *
 * @author TenSunLee
 * @createdTime  2019/8/15 11点18分
 * @version 1.0.0
 * @updateBy TenSunLee
 * @updatedTime  2019/8/15 11点18分
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SetCommonField {
    /**
     * 标注方法类型
     * @return 方法类型字符串
     */
    String methodType();
}


import java.sql.Timestamp;
import java.util.List;

/**
 * 封装所有需要设置的公共字段类
 *
 * @author TenSunLee
 * @createdTime 2019/8/15 13点38分
 * @version 1.0.0
 * @updateBy TenSunLee
 * @updatedTime 2019/8/15 13点41分
 *
 */
public class CommonField {
    /**
     * 组织机构id
     */
    private Long orgId;
    /**
     * 公司id
     */
    private Long companyId;

    private Boolean manager;

    private Byte managerLevel;

    private List<RoleSimpleInfo> roles;
    /**
     * 创建人id
     */
    private Long createdBy;
    /**
     * 创建时间
     */
    private Timestamp createdTime;
    /**
     * 最后修改人id
     */
    private Long updatedBy;
    /**
     * 最后修改时间
     */
    private Timestamp updatedTime;

    @Override
    public String toString() {
        return "CommonField{" +
                "orgId=" + orgId +
                ", companyId=" + companyId +
                ", manager=" + manager +
                ", managerLevel=" + managerLevel +
                ", roles=" + roles +
                ", createdBy=" + createdBy +
                ", createdTime=" + createdTime +
                ", updatedBy=" + updatedBy +
                ", updatedTime=" + updatedTime +
                '}';
    }

    public Long getOrgId() {
        return orgId;
    }

    public void setOrgId(Long orgId) {
        this.orgId = orgId;
    }

    public Long getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Long companyId
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值