在软件开发中,我们经常需要跟踪实体的历史记录,例如创建时间、修改时间等。Spring Data JPA 提供了一种名为 Auditing 的功能,可以自动处理这些操作。本文将介绍如何在 Spring Boot 项目中使用 Spring JPA Auditing。
在实体类上添加注解;
@MappedSuperclass@Datapublic class Domain implements Serializable { @CreatedBy @Column(name = "creator", length = 56) private String creator; @CreatedDate @Column(name = "create_time", length = 12) private Date createTime; @LastModifiedBy @Column(name = "modifier", length = 56) private String modifier; @LastModifiedDate @Column(name = "modified_time", length = 12) private Date modifiedTime;}
// ...@EntityListeners(AuditingEntityListener.class)public class Domain implements Serializable { // ...}
public class DomainAuditorAware implements AuditorAware<String> { @Override public Optional<String> getCurrentAuditor() { return Optional.of("我是操作人"); }}
@Configurationpublic class JpaAuditingConfiguration { @Bean public DomainAuditorAware domainAuditorAware(){ return new DomainAuditorAware(); }}
在resource目录添加自动注入配置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,这样通过引入jar就可以自动使用该配置。
cn.cycad.jpa.auditing.config.JpaAuditingConfiguration
@Entity@Table(name = "t_user")@Datapublic class User extends Domain { @Id private String id; private String caption;}
public interface UserRepository extends JpaRepository<User,String> { }
@RestController@RequestMapping("/user")public class UserController { @Resource private UserRepository userRepository; @PostMapping public User saveUser(@RequestBody User user){ return userRepository.save(user); }}
@EnableJpaAuditing@EntityScan({"cn.cycad.jpa.auditing.sample.entity"})@EnableJpaRepositories(basePackages="cn.cycad.jpa.auditing.sample.repository")@SpringBootApplicationpublic class SampleApplication{ public static void main(String[] args) { SpringApplication.run(SampleApplication.class, args); }}
通过注解@EnableJpaAuditing启用。
### 新增用户POST http://localhost:8080/userContent-Type: application/json{ "id": "1", "caption": "tom"}
这样每次调用用户新增请求时,默认会将DomainAuditorAware的返回值填充到@CreatedBy与@LastModifiedBy修饰的字段上去。
可以看到,实现该效果狐妖有以下几个关键点:
本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-95001-0.html基于JPA如何处理数据表公共字段?
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com