本文小编为大家详细介绍“Spring Data JPA如何实现审计功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Spring Data JPA如何实现审计功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
实现该功能,主要涉及到下列注解:
@EnableJpaAuditing注解:启用JPA审计功能开关。
@CreatedBy注解:创建人,当实体被insert的时候,会设置值。
@LastModifiedBy注解:最后一次修改者,当实体每次被update的时候,会设置值。
@CreatedDate注解:创建日期,当实体被insert的时候,会设置值。
@LastModifiedDate注解:最后一次修改日期,当实体每次被update的时候,会设置值。
如何使用
一、引入依赖;
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
二、实现AuditorAware接口,来自定义获取用户的信息;在实际项目中需要从用户权限模块中获取到当前登录用户的实际信息;
package com.xxkfz.simplememory.config;import org.springframework.context.annotation.Configuration;import org.springframework.data.domain.AuditorAware;import java.util.Optional;@Configurationpublic class SpringSecurityAuditorAware implements AuditorAware<String> { @Override public Optional<String> getCurrentAuditor() { return Optional.of("xxkfz"); }}
三、 创建实体类,并标记审计属性;
package com.xxkfz.simplememory.entity;import lombok.Data;import org.springframework.data.annotation.CreatedBy;import org.springframework.data.annotation.CreatedDate;import org.springframework.data.annotation.LastModifiedBy;import org.springframework.data.annotation.LastModifiedDate;import org.springframework.data.jpa.domain.support.AuditingEntityListener;import javax.persistence.*;import java.util.Date;@Data@EntityListeners({AuditingEntityListener.class})@Entity@Table(name = "t_user")public class SysUser { @Id @Column(name = "id") private String id; @Column(name = "username") private String username; @Column(name = "password") private String password; @CreatedBy @Column(name = "created_by") private String createdBy; @LastModifiedBy @Column(name = "last_modified_by") private String lastModifiedBy; @CreatedDate @Column(name = "created_date") private Date createdDate; @LastModifiedDate @Column(name = "last_modified_date") private Date lastModifiedDate; @Column(name = "real_name") private String realName;}
四、创建JPA Repository接口实现,用于对数据访问;
package com.xxkfz.simplememory.repository;import com.xxkfz.simplememory.entity.SysUser;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface UserRepository extends JpaRepository<SysUser, String> {}
五、在启动类上添加注解@EnableJpaAuditing
package com.xxkfz.simplememory;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.data.jpa.repository.config.EnableJpaAuditing;@EnableJpaAuditing@SpringBootApplicationpublic class SimpleMemoryApplication { public static void main(String[] args) { SpringApplication.run(SimpleMemoryApplication.class, args); }}
六、编写测试类,进行测试;
package com.xxkfz.simplememory.controller.system;import cn.hutool.core.lang.UUID;import com.xxkfz.simplememory.entity.SysUser;import com.xxkfz.simplememory.mapper.SysOrderMapper;import com.xxkfz.simplememory.repository.UserRepository;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;@RestController@RequestMapping("/sys_user")@Slf4jpublic class SysUserController { @Autowired UserRepository userRepository; @GetMapping("save") public void save() { SysUser user = new SysUser(); user.setId(UUID.fastUUID().toString()); user.setUsername("公众号【SimpleMemory】"); SysUser sysUser = userRepository.save(user); log.info("sysUser === {}", sysUser); } @GetMapping("update") public void update() { SysUser sysUser = userRepository.getById("1"); sysUser.setUsername("admin"); SysUser updateSysUser = userRepository.save(sysUser); log.info("updateSysUser === {}", updateSysUser); }}
读到这里,这篇“Spring Data JPA如何实现审计功能”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。