在项目中每条数据在创建修改的时候,我们都需要记录创建人,创建时间,修改人,修改时间等信息。如果每次新增的时候都去手动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); } }
做猪小侠源码的代理,提供一站式服务
如果你不懂得搭建网站或者服务器,小程序,源码之类的怎么办? 第一通过本站学习各种互联网的技术 第二就是联系客服,我帮帮你搭建(当然要收取部分的费用) 第三成为我们的代理,我们提供整套的服务。