AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

基于JPA如何處理數據表公共字段?

來源: 責編: 時間:2024-06-20 08:55:26 125觀看
導讀在軟件開發中,我們經常需要跟蹤實體的歷史記錄,例如創建時間、修改時間等。Spring Data JPA 提供了一種名為 Auditing 的功能,可以自動處理這些操作。本文將介紹如何在 Spring Boot 項目中使用 Spring JPA Auditing。實

在軟件開發中,我們經常需要跟蹤實體的歷史記錄,例如創建時間、修改時間等。Spring Data JPA 提供了一種名為 Auditing 的功能,可以自動處理這些操作。本文將介紹如何在 Spring Boot 項目中使用 Spring JPA Auditing。ZVY28資訊網——每日最新資訊28at.com

實現方式

在實體類上添加注解;ZVY28資訊網——每日最新資訊28at.com

  1. 定義通用實體,比如Domain類,我們會將通用字段在這里定義
@MappedSuperclass@Datapublic class Domain implements Serializable {    @CreatedBy    @Column(name = "creator", length = 56)    private String creator;    @CreatedDate    @Column(name = "create_time", length = 12)    private Date createTime;    @LastModifiedBy    @Column(name = "modifier", length = 56)    private String modifier;    @LastModifiedDate    @Column(name = "modified_time", length = 12)    private Date modifiedTime;}
  1. 添加Auditing相關注解;
// ...@EntityListeners(AuditingEntityListener.class)public class Domain implements Serializable {    // ...}
  1. 添加自動填充屬性實現,主要通過實現AuditorAware接口,并將實現注入到spring容器;
public class DomainAuditorAware implements AuditorAware<String> {    @Override    public Optional<String> getCurrentAuditor() {        return Optional.of("我是操作人");    }}
  1. 定義spring自動配置;
@Configurationpublic class JpaAuditingConfiguration {    @Bean    public DomainAuditorAware domainAuditorAware(){        return new DomainAuditorAware();    }}

在resource目錄添加自動注入配置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,這樣通過引入jar就可以自動使用該配置。ZVY28資訊網——每日最新資訊28at.com

cn.cycad.jpa.auditing.config.JpaAuditingConfiguration

應用示例

  1. 比如現在有一個User實體,我們通過繼承基類;
@Entity@Table(name = "t_user")@Datapublic class User extends Domain {    @Id    private String id;    private String caption;}
  1. 定義用戶對應的Repository;
public interface UserRepository extends JpaRepository<User,String> {    }
  1. 用戶的創建與修改基于UserRepository來實現;
@RestController@RequestMapping("/user")public class UserController {    @Resource    private UserRepository userRepository;        @PostMapping    public User saveUser(@RequestBody User user){        return userRepository.save(user);    }}
  1. 服務;
@EnableJpaAuditing@EntityScan({"cn.cycad.jpa.auditing.sample.entity"})@EnableJpaRepositories(basePackages="cn.cycad.jpa.auditing.sample.repository")@SpringBootApplicationpublic class SampleApplication{    public static void main(String[] args) {        SpringApplication.run(SampleApplication.class, args);    }}

通過注解@EnableJpaAuditing啟用。ZVY28資訊網——每日最新資訊28at.com

  1. 編寫測試用例;
### 新增用戶POST http://localhost:8080/userContent-Type: application/json{  "id": "1",  "caption": "tom"}

這樣每次調用用戶新增請求時,默認會將DomainAuditorAware的返回值填充到@CreatedBy與@LastModifiedBy修飾的字段上去。ZVY28資訊網——每日最新資訊28at.com

實現原理

可以看到,實現該效果狐妖有以下幾個關鍵點:ZVY28資訊網——每日最新資訊28at.com

  1. 實體需要添加@EntityListeners(AuditingEntityListener.class),并且需要再對應字段上標識出需要注入的操作人、操作時間等。
  2. 需要編寫自己的實現AuditorAware<String>,這里只用關注創建人,時間沒必要處理,當然也可以通過實現接口DateTimeProvider來擴展。
  3. 需要基于JpaRepository接口實現用戶的新增或修改。
  4. 需要@EnableJpaAuditing開啟。

本文鏈接:http://www.tebozhan.com/showinfo-26-95001-0.html基于JPA如何處理數據表公共字段?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Runway 王者歸來發布 Gen-3 Google 快手萬興科技等紛紛聚焦 AI 視頻生成賽道

下一篇: IDC報告:AR/VR頭顯出貨量驟降67.4%,但MR/ER頭顯呈現新機遇

標簽:
  • 熱門焦點
Top