【实战】JPA审计实现自动填充“创建时间 修改时间 创建者 修改者”

介绍

在实际业务中的表里经常会加入 创建时间 修改时间 创建者 修改者 这四个字段。而spring data jpa 的审计主要是做一些自动化填充参数使用的。因此为了简化开发, 我们可以将其交给jpa来自动填充。

使用方法

基于springboot的使用是通过注解的方式来实现。 先建一个基础类,继承这个抽象类的entity对象,在执行jpa中的save系列方法的时候 ,都会自动的将上面四个属性填充。save系列方法填充规则是,保存数据时发现没有则新增,同时新增加创建时间 修改时间 创建者 修改者,如果存在则修改,同时更新修改时间 修改者。

第一步

在启动类上添加@EnableJpaAuditing注解,启用jpa的审核

@EnableEncryptableProperties
@SpringBootApplication
@EnableJpaAuditing
@EnableAsync
public class RiskApplication {
    public static void main(String[] args) {
        SpringApplication.run(RiskApplication.class, args);
    }
}

第二步

在基础类上添加jpa实体侦听器@EntityListeners(AuditingEntityListener.class),并且在具体属性上添加@CreatedBy、@CreatedDate、@LastModifiedBy、@LastModifiedBy注解。

@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@GenericGenerator(name = "system-uuid", strategy = "uuid")
public class BaseEntity implements Serializable {
    /**
     * 主键
     */
    @Id
    @GeneratedValue(generator = "system-uuid")
    @NotNull(message = "ID不能为空", groups = {ValidationGroup.update.class, ValidationGroup.delete.class})
    private String id;
    /**
     * 创建人
     */
    @CreatedBy
    private String createUser;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @CreatedDate
    private Date createTime;
    /**
     * 修改人
     */
    @LastModifiedBy
    private String updateUser;
    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @LastModifiedDate
    private Date updateTime;
}

第三步

到这里,修改时间和创建时间很好理解,就是当时时间,但是创建者和修改者具有不确定性,就需要通过实现AuditorAware接口让程序知道当前审核程序的用户,实现逻辑根据项目实际情况编写

@Configuration
public class UserIDAuditorBean implements AuditorAware<String> {
    @Override
    public Optional<String> getCurrentAuditor() {
        /**
         * 从jwt工具里面获取操作的当前用户信息
         */
        String username = JWTUtil.getUsername();
        if(null!=username){
            return Optional.of(username);
        }
        return Optional.empty();
    }
}

这样就能实现jpa自动填写创建时间、修改时间、创建者、修改者了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值