您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“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; /** * @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如何實現審計功能”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。