Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate
操作数据库映射实体类时,通常需要记录createTime和updateTime,如果每个对象新增或修改去都去手工操作创建时间、更新时间,会显得比较繁琐。
Springboot jpa提供了自动填充这两个字段的功能,简单配置一下即可。@CreatedDate、@LastModifiedDate、@CreatedBy、@LastModifiedBy前两个注解就是起这个作用的,后两个是设置修改人和创建人的,这里先不讨论。
首先,我们的很多实体类都是需要创建时间和更新时间的,我们不想在每个实体类里都去定义这两个字段,那么我们把它抽取到基类中,让实体类去继承它。
package com.tianyalei.testautotime.entity;import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;import javax.persistence.*;/*** Created by wuwf on 17/4/21.*/
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {@Id@GeneratedValue(strategy = GenerationType.AUTO)protected Integer id;@CreatedDateprivate Long createTime;@LastModifiedDateprivate Long updateTime;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Long getCreateTime() {return createTime;}public void setCreateTime(Long createTime) {this.createTime = createTime;}public Long getUpdateTime() {return updateTime;}public void setUpdateTime(Long updateTime) {this.updateTime = updateTime;}
}
AuditingEntityListener标签开启后,下面的时间标签才会生效。
然后还需要在启动类加上@EnableJpaAuditing注解。
做完这些,我们来测试一下,新建个Springboot项目,配置一下数据库信息
spring:jpa:database: mysqlshow-sql: truehibernate:ddl-auto: updatedatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: rootpassword:
新建个普通的实体类。
package com.tianyalei.testautotime.entity;import javax.persistence.Entity;@Entity
public class Post extends BaseEntity {private String title;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}
}
测试类:
import com.tianyalei.testautotime.entity.Post;
import com.tianyalei.testautotime.repository.PostRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest
public class TestautotimeApplicationTests {@AutowiredPostRepository postRepository;@Testpublic void save() {Post post = new Post();post.setTitle("title0");postRepository.save(post);}// @Test
// public void update() {
// Post post = postRepository.findOne(1);
// post.setTitle("title1");
// postRepository.save(post);
// }
}
先试试新增。
可以看到已经被自动赋值了。
然后试试update,将上面的update的注释放开。
可以看到更新时间也自动修改了。
需注意,如果你没有修改任何字段的值的话,即便走了save方法,updateTime也是不会更改的。
Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate相关推荐
- IDEA下SpringDataJPA加入jpa 后实体类出现报错问题
IDEA下SpringDataJPA加入jpa 后实体类出现报错问题 完成上述操作后即可在View --> Tool Windows下看到 Persistence选项,将其打开 在左下角弹出的P ...
- IDEA工作笔记-自动生成POJO或JPA的实体类
今天要要搞一个小后端,发现有些表有100多个域.就想着有没有自动生产的工具! 后面百度了下,发现有,在此记录下. 首先是要连接数据库: 右上角有Database 选择+号添加一个数据库: 然后进去后输 ...
- @NamedEntityGraphs --JPA按实体类对象参数中的字段排序问题得解决方法
JPA按实体类对象参数中的字段排序问题得解决方法@Entity @Table(name="complaints") @NamedEntityGraphs({ @NamedEntit ...
- 解决springdatajpa 在解析实体类的字段时候驼峰自动转为下划线问题
解决springdatajpa 在解析实体类的字段时候驼峰自动转为下划线问题 问题描述 springboot 在配置jpa时,利用idea自带工具逆向工程生成实体类,结果在调用findOne的时候,报 ...
- 向mysql表中插入/更新数据时自动添加创建时间/更新时间
目录 处理方式一:修改数据库字段类型 测试插入数据: 测试更新数据: 处理方式二:配置生成策略 [MySQL版本] 8.x 处理方式一:修改数据库字段类型 自动添加创建时间: 将字段类型设置为TIME ...
- Mysql 添加 create_time, update_time 创建时间 更新时间 自动更新
# 添加 创建 更新 时间字段 ALTER TABLE `表名` ADD COLUMN `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAM ...
- mysql创建与更新时间字段
http://blog.sina.com.cn/s/blog_672b419f0101k63f.html DATETIME类型用在你需要同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-M ...
- 实体类blob类型_Mysql的数据类型和JPA的实体类
MySQL中定义数据字段的类型对你数据库的优化是非常重要的.MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 Int,4字节,(-2147483648,21 ...
- MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段
mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...
- generator代码自动生成工具(动态生成注释、类注解、方法注解等)适用于swagger等需要配置实体类的场景
generator代码生成器大家都不陌生,但是在实际的业务场景中,实体类只有属性.getter/setter方法不满足需求,还需要手动去添加需要的功能.比如项目使用swagger生成api文档时,需要 ...
最新文章
- Ubuntu里面一些权限问题
- 程序员眼中的电脑和空调 | 每日趣闻
- 脚本中export不起作用的原因分析
- Ant打可执行jar包指南
- 东芝移动硬盘拆解图_华为Mate40系列新技术曝光:海思闪存亮相,性能超三星东芝...
- 一个好的MIS系统应该考虑哪些内容
- mysql分组获取其他字段_sqlserver group by后获取其他字段(多种方法)
- Linux关于Sendmail配置错误的问题
- 【ElasticSearch】Es 启动流程 源码分析
- 进位和借位问题的研究
- sqlserver2005 openRowSet 和row_Number
- 图(一):图的邻接表表示
- 用python调用r包
- 集合竞价选股(附源码)
- java游戏妖魔兽_妖1.17正式版下载
- 代码检查工具系列——CheckStyle
- 谷歌Chrome浏览器离线安装包
- kali linux 安装谷歌浏览器
- vivo手机html有吗,vivo手机有哪些系列?区别是什么?
- 别人笑我太疯癫,我笑他人看不穿。