数据库中每条数据的往往需要记录创建及修改时间,可以从数据库表设置或利用SpringDataJPA自动设置。
使用SpringDataJPA实现
在SpringDataJPA中提供了@CreatedDate、@LastModifiedDate及@LastModifiedBy注解,分别用于自动填写创建时间、修改时间和修改人。
-
创建实体类基类(可跳过)
由于没个实体类都会包含id、createTime、updateTime等共同的字段,我们可以把这些字段提取到一个基类中,让其他实体类继承。
提取基类
其中@MappedSuperclass注解是告诉JPA在生成表结构的时候需要带上基类中的字段。
@EntityListeners(AuditingEntityListener.class)注解是实现JPA自动填入时间的关键注解。 -
实体类继承基类
实体类
注@Column注解的columnDefintion注解可以对数据库表的该列属性进行设置,如图中则规定了decimal的格式。
- 启动类添加@EnableJpaAuditing注解
完成以上配置即可。字段上的注解和启动类的注解是关键配置。
使用MySQL数据库实现
MySQL数据库表配置默认值也是可以实现自动插入时间。
好像需要MySQL5.6及以上版本支持
- 建表SQL
create_time
timestamp not null default current_timestamp comment '创建时间',
update_time
timestamp not null default current_timestamp on update current_timestamp comment '修改时间'
-
实体类注解
这次需要在实体类上加@DynamicUpdate注解
@DynamicUpdate
配置完成。
网友评论