Spring Data JPA实现审计功能过程详解
在项目中每条数据在创建修改的时候,我们都需要记录创建人,创建时间,修改人,修改时间等信息。如果每次新增的时候都去手动set,代码冗余且显得很不友好。
下面给大家分享如何使用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; /** * @version 1.0.0 * @ClassName SpringSecurityAuditorAware.java * @Description 通过实现AuditorAware<T>接口自定义获取用户信息 */ @Configuration public 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; /** * @ClassName SysUser.java * @Description TODO */ @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; /** * @ClassName UserRepository.java * @Description JPA Repository接口实现,用于对数据库的访问 */ @Repository public 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 @SpringBootApplication public 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.*; /** * @ClassName SysUserController.java * @Description TODO */ @RestController @RequestMapping("/sys_user") @Slf4j public 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实现审计功能过程详解的文章就介绍到这了,更多相关Spring Data JPA实现审计内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot + MyBatis-Plus构建树形结构的几种方式
在实际开发中,很多数据都是树形结构,本文主要介绍了SpringBoot + MyBatis-Plus构建树形结构的几种方式,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-08-08Elasticsearch8.1中的Script使用实例深入解读
这篇文章主要为大家介绍了Elasticsearch8.1中的Script使用实例深入解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-10-102020新版idea创建项目没有javaEE 没有Web选项的完美解决方法
这篇文章主要介绍了2020新版idea创建项目没有javaEE 没有Web选项的完美解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09Netty客户端接入流程NioSocketChannel创建解析
这篇文章主要为大家介绍了Netty客户端接入流程NioSocketChannel创建源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-03-03Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理
这篇文章给大家收集整理了有关java中final,finally,finalize三个关键字的区别介绍,非常不错,具有参考借鉴价值,需要的的朋友参考下吧2017-04-04
最新评论