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 使用hibernate validator校验
这篇文章主要介绍了SpringBoot 使用hibernate validator校验,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-11-11
Java中的WeakHashMap、LinkedHashMap、TreeMap与Set详解
这篇文章主要介绍了Java中的WeakHashMap、LinkedHashMap、TreeMap与Set详解,在JVM中,一个对象如果不再被使用就会被当做垃圾给回收掉,判断一个对象是否是垃圾,我们的WeakHashMap就是基于弱引用,需要的朋友可以参考下2023-09-09
Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题
这篇文章主要介绍了Spring Boot 将yyyy-MM-dd格式的文本字符串直接转换为LocalDateTime出现的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-09-09
Java 重命名 Excel 工作表并设置工作表标签颜色的示例代码
这篇文章主要介绍了Java 重命名 Excel 工作表并设置工作表标签颜色的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-10-10
构建SpringBoot+MyBatis+Freemarker的项目详解
在本篇内容里小编给大家整理的是关于构建SpringBoot+MyBatis+Freemarker的项目的具体步骤以及实例代码,需要的朋友们参考下。2019-06-06


最新评论