@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();
}
}