天天看点

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

继续阅读