如何自动给实体类公共字段,创建时间、创建人、更新时间等 赋值
时间: 2023-11-30 22:02:36 浏览: 227
在CRUD操作中与业务无关的SQL字段赋值的方法
在实体类中,我们可以使用注解和AOP等方式来实现自动给公共字段赋值的功能。下面是一个示例:
```java
import java.util.Date;
public class BaseEntity {
private Long id;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
// 在实体类持久化之前,自动设置createBy、createTime、updateBy、updateTime
@PrePersist
public void prePersist() {
createTime = updateTime = new Date();
createBy = updateBy = "system";
}
// 在实体类更新之前,自动设置updateBy、updateTime
@PreUpdate
public void preUpdate() {
updateTime = new Date();
updateBy = "system";
}
// 省略getter和setter方法
}
```
上述代码中,使用了JPA提供的注解 `@PrePersist` 和 `@PreUpdate` 标注了 `prePersist()` 和 `preUpdate()` 方法,这两个方法在实体类被持久化前和更新前自动调用。在这两个方法中,我们可以编写代码来实现自动给公共字段赋值的功能。
在 `prePersist()` 方法中,我们使用 `new Date()` 方法来获取当前时间,并将其赋值给 `createTime` 和 `updateTime` 字段。同时,我们将 `createBy` 和 `updateBy` 字段赋值为 "system",表示是系统自动创建和更新的。
在 `preUpdate()` 方法中,我们同样使用 `new Date()` 方法来获取当前时间,并将其赋值给 `updateTime` 字段。同时,我们将 `updateBy` 字段赋值为 "system",表示是系统自动更新的。
需要注意的是,上述代码中的字段和默认值都是示例,具体情况需要根据实际需求进行调整。同时,如果需要自动获取当前登录用户信息,可以使用AOP等方式来实现。
阅读全文