日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

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

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

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

實現方式

在實體類上添加注解;xmy28資訊網——每日最新資訊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就可以自動使用該配置。xmy28資訊網——每日最新資訊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啟用。xmy28資訊網——每日最新資訊28at.com

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

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

實現原理

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

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

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

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

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

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

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 沙洋县| 清新县| 清河县| 阿坝县| 如东县| 陈巴尔虎旗| 鲁甸县| 怀来县| 保德县| 永年县| 长沙县| 西丰县| 剑阁县| 太原市| 泌阳县| 格尔木市| 都江堰市| 清苑县| 江永县| 平昌县| 杂多县| 明星| 海安县| 兴化市| 双牌县| 连城县| 海口市| 武鸣县| 南充市| 南阳市| 竹山县| 蒙城县| 漳州市| 繁峙县| 绥德县| 定陶县| 尚义县| 池州市| 重庆市| 阿拉善盟| 汉中市|