欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JPA中@CreatedDate和@LastModifiedDate的使用方式

 更新時間:2023年11月22日 10:06:22   作者:Evan Wang  
這篇文章主要介紹了JPA中@CreatedDate和@LastModifiedDate的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前些時間寫了新項目,然后嘗試使用了Spring Data JPA,發(fā)現(xiàn)新世界。

很多功能都可以基于注解實(shí)現(xiàn),為開發(fā)省去了不少功夫。

關(guān)于時間的生成注解@CreatedDate@LastModifiedDate的使用,在此記錄一下。

一、使用步驟

1.在實(shí)體類上加上注解 @EntityListeners(AuditingEntityListener.class),在相應(yīng)的字段上添加對應(yīng)的時間注解 @LastModifiedDate@CreatedDate

注意:日期的類型可以使用Date,也可以使用Long。我一般習(xí)慣用Date。

//@Data lombok注解,替我們生成getter和setter。
@Data
@Entity
@Table(name = "task")
@EntityListeners(AuditingEntityListener.class)
public class Task {
    /**
     * 自增主鍵
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    /**
     * 創(chuàng)建時間
     */
    @CreatedDate
    @Column(name = "createTime", columnDefinition = "timestamp not null default current_timestamp")
    private Date createTime;

    /**
     * 更新時間
     */
    @LastModifiedDate
    @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
    private Date updateTime;
}

2.在Application啟動類中添加注解 @EnableJpaAuditing

@EnableJpaAuditing
@SpringBootApplication
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    } 
}

3.除了上面提到的注解外,Spring Data JPA 還提供 @CreatedBy@LastModifiedBy 注解,用于保存和更新當(dāng)前操作用戶的信息(如id、name)。

如果有這方面的需求,可以參考下面的配置實(shí)現(xiàn),代碼如下:

@Data
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Task {

  	/**
     * 自增主鍵
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    /**
     * 創(chuàng)建時間
     */
    @CreatedDate
    @Column(name = "createTime", columnDefinition = "timestamp not null default current_timestamp")
    private Date createTime;

    /**
     * 更新時間
     */
    @LastModifiedDate
    @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
    private Date updateTime;
    
     /**
     * 創(chuàng)建人
     */
    @CreatedBy
    @Column(name = "createBy", columnDefinition = "varchar(255) not null")
    private String createBy;

    /**
     * 最后修改人
     */
    @LastModifiedBy
    @Column(name = "lastModifiedBy", columnDefinition = "varchar(255) not null")
    private String lastModifiedBy;
}

二、獲取操作員信息

/**
 * Spring Data JPA通過AuditorAware<T>接口獲取用戶信息,
 * 其中泛型T可以為String保存用戶名,也可以為Long/Integer保存用戶ID。
 * @author EvanWang
 *
 */
@Component
public class AuditorConfig implements AuditorAware<String> {

    /**
     * 返回操作員標(biāo)志信息
     *
     * @return
     */
    @Override
    public Optional<String> getCurrentAuditor() {
        // 這里應(yīng)根據(jù)實(shí)際業(yè)務(wù)情況獲取具體信息
        return Optional.of(userName);
    }
}

三、補(bǔ)充注解

Hibernate 也提供了類似上述時間注解的功能實(shí)現(xiàn),這種方法只需要一步配置,更改為注解 @UpdateTimestamp@CreationTimestamp 

代碼如下:

@Data
@MappedSuperclass
@NoArgsConstructor
@AllArgsConstructor
public class Task {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @UpdateTimestamp
    @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
    private Date updateTime;

    @CreationTimestamp
    @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
    private Date createTime;
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java生成sm2/hutool生成公鑰私鑰代碼示例

    java生成sm2/hutool生成公鑰私鑰代碼示例

    這篇文章主要給大家介紹了關(guān)于java生成sm2/hutool生成公鑰私鑰的相關(guān)資料,Java是一種廣泛使用的編程語言,可以用來生成公鑰和私鑰文件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • java讀取cvs文件并導(dǎo)入數(shù)據(jù)庫

    java讀取cvs文件并導(dǎo)入數(shù)據(jù)庫

    這篇文章主要為大家詳細(xì)介紹了java讀取cvs文件并導(dǎo)入數(shù)據(jù)庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • IDEA的spring項目使用@Qualifier飄紅問題及解決

    IDEA的spring項目使用@Qualifier飄紅問題及解決

    這篇文章主要介紹了IDEA的spring項目使用@Qualifier飄紅問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 從Hello?World開始理解GraphQL背后處理及執(zhí)行過程

    從Hello?World開始理解GraphQL背后處理及執(zhí)行過程

    這篇文章主要為大家介紹了從Hello?World開始理解GraphQL背后處理過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • springboot中縮短一個url鏈接的實(shí)現(xiàn)

    springboot中縮短一個url鏈接的實(shí)現(xiàn)

    縮短 URL 是現(xiàn)代應(yīng)用程序中常見的需求,通常用于減少長 URL 的長度,使其更易于分享,URL 縮短服務(wù)的核心思路是將長 URL 映射到一個唯一的短代碼,本文主要介紹了springboot中縮短一個url鏈接的實(shí)現(xiàn),感興趣的可以了解一下
    2024-09-09
  • 圖文詳解Java中class的初始化順序

    圖文詳解Java中class的初始化順序

    網(wǎng)上有很多關(guān)于Java中class的初始化順序文章,但是本文通過圖文更加詳細(xì)的介紹了Java中class的初始化順序,并對class的裝載順序進(jìn)行了講解,下面一起來看看。
    2016-08-08
  • Java并發(fā)統(tǒng)計變量值偏差原因及解決方案

    Java并發(fā)統(tǒng)計變量值偏差原因及解決方案

    這篇文章主要介紹了Java并發(fā)統(tǒng)計變量值偏差原因及解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Java項目Guava包?HashMultimap使用及注意事項

    Java項目Guava包?HashMultimap使用及注意事項

    guava基本上可以說是java開發(fā)項目中,大概率會引入的包,今天介紹的主角是一個特殊的容器HashMultmap,可以簡單的將它的數(shù)據(jù)結(jié)構(gòu)理解為Map<K,?Set<V>>,今天主要介紹下基礎(chǔ)的知識點(diǎn)?HashMultmap級使用,感興趣的朋友一起看看吧
    2022-05-05
  • springboot如何讀取自定義配置項

    springboot如何讀取自定義配置項

    這篇文章主要介紹了springboot如何讀取自定義配置項的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • Spring Security注解方式權(quán)限控制過程

    Spring Security注解方式權(quán)限控制過程

    這篇文章主要介紹了Spring Security注解方式權(quán)限控制過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論