原创

SpringBoot JPA自动设置创建者、最后修改者

温馨提示:
本文最后更新于 2024年02月07日,已超过 18 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

书接上文,SpringBoot JPA自动设置创建时间、修改时间,审计不可能只包含创建时间、最后修改时间,肯定得有人,也就是必须得有创建者、最后修改者。

Spring Data Jpa设置创建者、最后修改者也非常简单。

实体修改

@Data
@Entity
@Table(name = "Book")
@EntityListeners(AuditingEntityListener.class)
public class Book {

    @Id
    private long id;

    private String name;

    private String author;

    private BigDecimal price;

    @CreatedDate
    private Timestamp createdDate;

    @CreatedBy
    private String createBy;

    @LastModifiedDate
    private Timestamp lastModifiedDate;

    @LastModifiedBy
    private String lastModifiedBy;

}

@CreatedBy注解用于标识创建者。

@LastModifiedBy注解用于标识最后修改者。

其他注解跟设置创建时间、最后修改时间一致,不再赘述,这里重点说一下,如何获取创建者、最后修改者。

设置创建者、最后修改者值

在Spring Data Jpa中,可以通过实现AuditorAware接口让程序知道当前审核程序的用户,实现逻辑根据项目实际情况编写。

/**
 * 审计接口,获取当前人员
 */
@Configuration
public class JpaAuditWare implements AuditorAware<String> {
    @Override
    public Optional<String> getCurrentAuditor() {
        return Optional.of(UUID.randomUUID().toString());
    }
}

验证

创建验证

 @GetMapping("save")
    public Book saveBook() {
        Book book = new Book();
        book.setId(1L);
        book.setName("《山海经》");
        book.setAuthor("佚名");
        book.setPrice(new BigDecimal("500"));
        return bookService.saveBook(book);
    }

修改验证

然后我们修改一下数据,验证一下最后修改人、最后修改时间

如果数据未发生改变,那么最后修改者、最后修改时间是不会发生改变的。

正文到此结束
本文目录