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