jpa 自动创建时间和更新时间@CreatedDate,@CreatedBy,@LastModifiedDate,@LastModifiedBy

@EnableJpaAuditing 表示开启审计功能。 支持在字段或者方法上进行注解 @CreateDate@CreatedBy@LastModifiedDate@LastModifiedBy
下面开始使用
Application类加@EnableJpaAuditing表示开启审计。
代码:

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

写一个类实现AuditorAware接口,因为获取user的方法要自定义:

@Configuration
public class UserAuditor implements AuditorAware<String> {
     
    @Override
    public Optional<String> getCurrentAuditor() {
     
        String ss="user2";
        return Optional.ofNullable(ss);
    }
}

实体类上添加@EntityListeners(AuditingEntityListener.class)
表示监听这个类。AuditingEntityListener.class是自带的默认监听类。

@Data
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity {
     
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;

    @CreatedDate
    private Date createDate;

    @LastModifiedDate
    private Date updateDate;

    @CreatedBy
    private String createBy;

    @LastModifiedBy
    private String updateBy;

    @Column(columnDefinition = "varchar(1) default '0' comment '删除标识 0 未删除 1 已删除'")
    private String delFlag;
}

测试类代码:

@RunWith(SpringRunner.class)  // 用什么来运行测试,例如可以用Junit4.Class
@SpringBootTest  // 替代ContextConfiguration来指定上下文
public class UserTest {
     
    @Autowired
    private EntityManager entityManager;
    @Test
    @Transactional
    public void insert(){
       // 插入的时候 2个时间都一样,创建者和更新者也一样
        User user = new User();
        user.setAddress("zhongshanlu");
        user.setMobile("159");
        user.setUsername("zhangfei");
        user.setPassword("1234");
        entityManager.persist(user);
        entityManager.flush();

    }
    @Test
    @Transactional
    public void update(){
        // 更新,updateDate 和 updateBy是否变化
        User user = entityManager.find(User.class, 1l);
        user.setDelFlag("1");
        entityManager.merge(user);
        entityManager.flush();
    }
}

你可能感兴趣的:(jpa)