4

在设计数据表时,常常需要两个字段:创建时间和修改时间。这两个字段类型一般为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,意味着不能直接生成时间戳。


BotBot
162 声望8 粉丝

时机未遇,耐心等待,厚积薄发。