成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
實體需要添加@EntityListeners(AuditingEntityListener.class),并且需要再對應字段上標識出需要注入的操作人、操作時間等。

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

實現方式

在實體類上添加注解;

  1. 定義通用實體,比如Domain類,我們會將通用字段在這里定義
@MappedSuperclass
@Data
public 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自動配置;
@Configuration
public class JpaAuditingConfiguration {

    @Bean
    public DomainAuditorAware domainAuditorAware(){
        return new DomainAuditorAware();
    }

}

在resource目錄添加自動注入配置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,這樣通過引入jar就可以自動使用該配置。

cn.cycad.jpa.auditing.config.JpaAuditingConfiguration

應用示例

  1. 比如現在有一個User實體,我們通過繼承基類;
@Entity
@Table(name = "t_user")
@Data
public 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")
@SpringBootApplication
public class SampleApplication{

    public static void main(String[] args) {
        SpringApplication.run(SampleApplication.class, args);
    }

}

通過注解@EnableJpaAuditing啟用。

  1. 編寫測試用例;
### 新增用戶
POST http://localhost:8080/user
Content-Type: application/json

{
  "id": "1",
  "caption": "tom"
}

這樣每次調用用戶新增請求時,默認會將DomainAuditorAware的返回值填充到@CreatedBy與@LastModifiedBy修飾的字段上去。

實現原理

可以看到,實現該效果狐妖有以下幾個關鍵點:

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

2024-08-29 08:58:30

JPA編寫數據操

2024-10-16 17:04:13

2019-08-15 10:20:19

云計算技術安全

2021-01-26 13:40:44

mysql數據庫

2010-05-18 17:17:02

MySQL數據表

2013-06-04 09:16:29

Google存儲數據

2021-08-11 16:57:03

數據中心光纖布線電纜管理

2010-06-09 18:14:02

2017-10-26 08:43:18

JavaScript內存處理

2019-12-23 10:20:12

Web圖片優化前端

2021-03-01 07:31:53

消息支付高可用

2012-12-12 09:49:41

2020-12-29 09:11:33

LinuxLinux內核

2017-03-13 13:21:34

Git處理大倉庫

2019-02-25 08:35:22

機器學習數據模型

2009-09-07 16:13:14

LINQ to SQL

2010-11-22 13:53:46

MySQL數據表

2010-11-23 16:04:40

MySQL數據表

2021-03-24 10:40:26

Python垃圾語言

2025-01-09 10:20:53

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区久久久 | 欧美日韩一区二区视频在线观看 | 亚洲精品一区在线 | 国产色婷婷精品综合在线播放 | 免费一区二区在线观看 | 男人av在线| 91色啪 | 欧美一a| 成人不卡 | 精品视频一区二区三区四区 | 在线观看第一区 | 久久一 | www.久久国产精品 | 国产激情视频网址 | 久草在线免费资源 | 国内精品久久久久 | 91天堂网| 色资源在线视频 | 欧美日韩国产精品 | 精品成人| 91精品免费视频 | 亚洲精品一区二区三区四区高清 | 欧美日韩视频在线第一区 | 国产69久久精品成人看动漫 | 超黄视频网站 | 日韩在线小视频 | 一本一道久久a久久精品综合 | 久久久久久国产一区二区三区 | 高清久久久| 欧美成人自拍 | 国产午夜精品一区二区三区在线观看 | 中文字幕电影在线观看 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 毛片免费在线 | 国产精品一区二区免费 | 国产xxxx搡xxxxx搡麻豆 | av资源在线看 | 日韩在线中文字幕 | 日韩精品免费播放 | 在线黄色网 | 人人天天操|