在设计数据表时,常常需要两个字段:创建时间和修改时间。这两个字段类型一般为Date类型的日期或Long类型的时间戳。
传统的做法就是先生成对应的日期或时间戳,然后保存到数据库中。
如果项目中的数据表比较多,每一次对数据表进行写操作,都会涉及日期操作,会有很多重复工作。
Spring Data JPA提供了相应的实体类注解,可以在写入数据时,自动更新实体创建时间和修改时间。
1、在实体类上加上注解 @EntityListeners(AuditingEntityListener.class)
,在相应的字段上添加对应的时间注解 @LastModifiedDate
和 @CreatedDate
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Sites {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@CreatedDate
private Date createDate;
@LastModifiedDate
private Date lastModifiedDate;
//...
}
注意:这里的CreatedDate和LastModifiedDate的类型可以是Date或Long,如果类型为Long,代表生成时间戳。
2、在Application启动类中添加注解 @EnableJpaAuditing
@SpringBootApplication
@EnableJpaAuditing
public class JerryApplication {
public static void main(String[] args) {
SpringApplication.run(JerryApplication.class, args);
}
}
补充:Hibernate 也提供了类似上述时间注解的功能实现,这种方法只需要在实体类上配置,更改为注解 @UpdateTimestamp
和 @CreationTimestamp
即可
@Entity
public class Sites {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@CreationTimestamp
private Date createDate;
@UpdateTimestamp
private Date lastModifiedDate;
//...
}
注意:使用@UpdateTimestamp
和 @CreationTimestamp
的属性类型只能为Date,不能为Long,意味着不能直接生成时间戳。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。