java数据库基类的实现
目的:
统一管理数据库共有字段,实现创建时间,创建人,修改时间,修改人的自动更新。
创建基础类:
@Data
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public class BaseModel {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
@CreatedDate
private Date createTime;
@CreatedBy
private String createName;
@LastModifiedDate
private Date lastChangeTime;
@LastModifiedBy
private String updateName;
}
注解说明:
(1)@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
(2)@EntityListeners(AuditingEntityListener.class):声明实体监听器:用于实体修改时做处理
(3)@MappedSuperclass:声明该类为实体父类·不会映射单独的表··而是把字段映射到子类表中
(4)@CreatedDate:表示该字段为创建时间时间字段,在这个实体被insert的时候,会自动为其赋值
(5)@CreatedBy:表示该字段为创建人,在这个实体被insert的时候,会自动为其赋值
(6)@LastModifiedDate、@LastModifiedBy同理。
创建子类
@Entity
@Table(name = "zzy_person")
@Data
public class Person extends BaseModel{
private String name;
private String qq;
private Integer age;
private String address;
}
实现AuditorAware接口
@Component
public class SpringSecurityAuditorAware implements AuditorAware {
@Value(value = "${user.name}")
private String userName;
@Override
public String getCurrentAuditor() {
return userName;
}
}
说明:此处由于自己是学习,因此选择将人员信息放在配置文件里面,这里直接引入,实现测试,实际开发中,一般都是调用方法获取人员信息,此处的实现可以根据自身需求修改。
注意事项:
需要在启动类上面注解:@EnableJpaAuditing