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

基于JPA如何處理數(shù)據(jù)表公共字段?

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

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

實現(xiàn)方式

在實體類上添加注解;

  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. 添加自動填充屬性實現(xiàn),主要通過實現(xiàn)AuditorAware接口,并將實現(xiàn)注入到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. 比如現(xiàn)在有一個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. 用戶的創(chuàng)建與修改基于UserRepository來實現(xiàn);
@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"
}

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

實現(xiàn)原理

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

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

2024-08-29 08:58:30

JPA編寫數(shù)據(jù)操

2024-10-16 17:04:13

2019-08-15 10:20:19

云計算技術安全

2010-05-18 17:17:02

MySQL數(shù)據(jù)表

2013-06-04 09:16:29

Google存儲數(shù)據(jù)

2021-01-26 13:40:44

mysql數(shù)據(jù)庫

2019-12-23 10:20:12

Web圖片優(yōu)化前端

2017-10-26 08:43:18

JavaScript內(nèi)存處理

2021-03-01 07:31:53

消息支付高可用

2021-08-11 16:57:03

數(shù)據(jù)中心光纖布線電纜管理

2009-09-07 16:13:14

LINQ to SQL

2010-06-09 18:14:02

2025-02-18 08:10:00

SQL數(shù)據(jù)表數(shù)據(jù)庫

2010-11-22 13:53:46

MySQL數(shù)據(jù)表

2010-11-23 16:04:40

MySQL數(shù)據(jù)表

2012-12-12 09:49:41

2020-12-29 09:11:33

LinuxLinux內(nèi)核

2017-03-13 13:21:34

Git處理大倉庫

2019-02-25 08:35:22

機器學習數(shù)據(jù)模型

2021-03-24 10:40:26

Python垃圾語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一二三区精品 | 日韩av在线一区二区 | 野狼在线社区2017入口 | 久久99深爱久久99精品 | 老司机深夜福利网站 | 精品国产色 | 精品久久一区 | 二区av| 久久精品一区 | 久久久毛片| 九九热免费视频在线观看 | 亚洲一区不卡 | 天天摸天天干 | 人人亚洲 | 亚洲一区免费 | 天天操,夜夜爽 | 国产精品一区二区在线 | 亚洲色在线视频 | 九九久久精品视频 | 一区二区亚洲 | 欧美精品一区二区三区四区五区 | 亚洲精品欧美一区二区三区 | 91福利在线观看 | 久久精品国产99国产精品 | 免费在线日韩 | 精品一区二区三区免费视频 | 久久久久久久一区 | 在线视频 亚洲 | 亚洲国产成人av好男人在线观看 | 97免费视频在线观看 | jdav视频在线观看免费 | 午夜影院在线免费观看视频 | 在线亚洲免费视频 | 欧美激情一区 | 中文字幕成人免费视频 | 国产成人自拍av | 热99在线| 国产欧美在线 | 久热国产精品视频 | 成人免费视频网站在线观看 | 亚洲区一区二 |