美文网首页js css html
Spring Data JPA之Auditing

Spring Data JPA之Auditing

作者: AC编程 | 来源:发表于2018-12-10 17:16 被阅读107次

    一、Auditing 自动填充字段功能

    操作数据库映射实体类时,通常需要记录createTime和updateTime,如果每个对象新增或修改去都去手工操作创建时间、更新时间,会显得比较繁琐。Spring Data JPA提供了自动填充字段的功能,简单配置一下即可

    • @CreatedDate
      表示该字段为创建时间时间字段,在这个实体被insert的时候,会设置值
    • @CreatedBy
      表示该字段为创建人,在这个实体被insert的时候,会设置值
    • @LastModifiedDate、@LastModifiedBy同理。

    二、使用

    首先申明实体类,需要在类上加上注解@EntityListeners(AuditingEntityListener.class),其次在application启动类中加上注解EnableJpaAuditing,同时在需要的字段上加上@CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy等注解。
    这个时候,在jpa.save方法被调用的时候,时间字段会自动设置并插入数据库,但是CreatedBy和LastModifiedBy并没有赋值,因为需要实现AuditorAware接口来返回你需要插入的值。

    • Application
    @SpringBootApplication
    @ServletComponentScan
    @EnableJpaAuditing
    public class YoPointServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(YoPointServerApplication.class, args);
        }
    }
    
    • AuditorAware
    @Configuration
    public class InjectOpreator implements AuditorAware<String> {
    
        /**
         * 给Bean中的 @CreatedBy  @LastModifiedBy 注入操作人
         * @return
         */
        @Override
        public Optional<String> getCurrentAuditor() {
    
            SecurityContext ctx = SecurityContextHolder.getContext();
            if (ctx == null) {
                return null;
            }
            if (ctx.getAuthentication() == null) {
                return null;
            }else{
                String loginUserName = ctx.getAuthentication().getName();
                Optional<String> name = Optional.ofNullable(loginUserName);
                return name;
            }
        }
    }
    
    • Entity
    @MappedSuperclass
    @EntityListeners(AuditingEntityListener.class)
    public class IdEntity {
        @CreatedBy //自动插入操作人
        private String createBy;
        @CreatedDate //自动插入操作时间
        private Timestamp createDate;
        @LastModifiedBy //自动插入操作人
        private String updateBy;
        @LastModifiedDate //有修改时 会自动更新时间
        private Timestamp updateDate;
    
        其他字段省略..... 
    }
    
    参考文章:

    相关文章

      网友评论

        本文标题:Spring Data JPA之Auditing

        本文链接:https://www.haomeiwen.com/subject/ktddhqtx.html