欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Jpa 实现自动更新表中的创建日期和修改时间

程序员文章站 2022-04-09 12:04:45
一般来说创建时间和修改时间 两个字段是一个实体类必备的。在阿里java开发手册中也对此的说明:【强制】表必备三字段:id, create_time, update_time。说明:其中 id 必为主键...

一般来说创建时间和修改时间 两个字段是一个实体类必备的。

在阿里java开发手册中也对此的说明:

【强制】表必备三字段:id, create_time, update_time。

说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。create_time, update_time 的类型均为 datetime 类型,前者现在时表示主动式创建,后者过去分词表示被动式更新。

在jpa 中也是支持新的数据保存是自动写入创建时间,当数据有修改时 自动记录修改时间。在springboot 的启动类上加 @enablejpaauditing 来开启时间的支持, 在字段上使用 @createddate 和@lastmodifieddate 注解来即可完成时间的自动更新。

实例:

由于这两个字段所有实体类都有,所以可以将它们抽取到一个通用的类里面,其他实体类需要时直接继承即可。

补充:jpa配置实体类创建时间更新时间自动赋值,@createdate,@lastmodifieddate

操作数据库映射实体类时,通常需要记录createtime和updatetime,如果每个对象新增或修改去都去手工操作创建时间、更新时间,会显得比较繁琐。

springboot jpa提供了自动填充这两个字段的功能,简单配置一下即可。@createddate、@lastmodifieddate、@createdby、@lastmodifiedby前两个注解就是起这个作用的,后两个是设置修改人和创建人的,这里先不讨论。

首先,我们的很多实体类都是需要创建时间和更新时间的,我们不想在每个实体类里都去定义这两个字段,那么我们把它抽取到基类中,让实体类去继承它。

auditingentitylistener标签开启后,下面的时间标签才会生效。

然后还需要在启动类加上@enablejpaauditing注解。

做完这些,我们来测试一下,新建个springboot项目,配置一下数据库信息

新建个普通的实体类。

测试类:

先试试新增。

可以看到已经被自动赋值了。

然后试试update,将上面的update的注释放开。

可以看到更新时间也自动修改了。

需注意,如果你没有修改任何字段的值的话,即便走了save方法,updatetime也是不会更改的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。