js css html

Spring Data JPA之Auditing

2018-12-10  本文已影响107人  AC编程

一、Auditing 自动填充字段功能

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

二、使用

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

@SpringBootApplication
@ServletComponentScan
@EnableJpaAuditing
public class YoPointServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(YoPointServerApplication.class, args);
    }
}
@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;
        }
    }
}
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class IdEntity {
    @CreatedBy //自动插入操作人
    private String createBy;
    @CreatedDate //自动插入操作时间
    private Timestamp createDate;
    @LastModifiedBy //自动插入操作人
    private String updateBy;
    @LastModifiedDate //有修改时 会自动更新时间
    private Timestamp updateDate;

    其他字段省略..... 
}
参考文章:
上一篇 下一篇

猜你喜欢

热点阅读