最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JPA之@EnableJpaAuditing注解使用

 更新時間:2021年12月21日 10:57:08   作者:小白寫程序  
這篇文章主要介紹了JPA之@EnableJpaAuditing注解使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@EnableJpaAuditing注解使用

在Spring JPA中,支持在字段或方法上進行注解 @CreateDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy。具體含義:

  • @CreateDate:表示該字段是創(chuàng)建時間字段,在這個實體被insert的時候,會自動填充創(chuàng)建的時間,不用手動填充該字段。
  • @CreatedBy:表示該字段是創(chuàng)建人字段,在這個實體被insert的時候,會自動填充創(chuàng)建人字段,不用手動填充。
  • @LastModifiedDate、@LastModifiedBy同理。

如何實現自動填充功能,即如何使用審計?

1、在Xxx Application 啟動類上添加 @EnableJpaAuditing:開啟審計功能。

@EnableScheduling
@EnableJpaAuditing //利用jpa可以給MySQL列屬性自動賦值,例如一些創(chuàng)建時間,修改時間
@EnableEurekaClient
@SpringBootApplication
public class CouponTemplateApplication {
    public static void main(String[] args) {
        SpringApplication.run(CouponTemplateApplication.class, args);
    }
 /**
     * 測試中如果無法自動識別,可能是包路徑的問題,采用手動聲明bean的方式
     * @return
     */
    @Bean
    public UserAuditor setUserAuditorAware(){
        return new UserAuditor();
    }
}

2、實體類上添加 @EntityListeners(AuditingEntityListener.class):開啟實體類監(jiān)聽。

3、在需要的字段上加上 @CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy 等注解。

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity  //實體類
@EntityListeners(AuditingEntityListener.class) //監(jiān)聽器,自動賦值創(chuàng)建時間
@Table(name = "coupon_template")
@JsonSerialize(using = CouponTemplateSerialize.class) //綁定自定義的序列化器
public class CouponTemplate implements Serializable {
    /** 自增主鍵 */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id",nullable = false)
    @Basic //指定屬于我們數據表的一個列,相反的@Transient,表示該列不屬于數據表
    private Integer id;
    /** 是否是可用狀態(tài) */
    @Column(name = "available",nullable = false)
    private Boolean available;
    /** 是否過期 */
    @Column(name = "expired",nullable = false)
    private Boolean expired;
    /** 優(yōu)惠券名稱 */
    @Column(name = "name",nullable = false)
    private String name;
    /** 優(yōu)惠券 logo */
    @Column(name = "logo",nullable = false)
    private String logo;
    /** 優(yōu)惠券描述 */
    @Column(name = "intro",nullable = false)
    private String desc;
    
    /** 優(yōu)惠券模板 創(chuàng)建時間
     *      使用@CreateDate注解在插入的時候,自動生成創(chuàng)建時間,與監(jiān)聽注解有關
     * */
    @CreatedDate
    @Column(name = "create_time",nullable = false)
    private Date createTime;
}

4、實現 AuditorAware 接口來返回你需要插入的值。重點!

@Configuration
@Slf4j
public class UserAuditor implements AuditorAware<String> {
    /**
     * 獲取當前創(chuàng)建或修改的用戶
     * @return
     */
    @Override
    public Optional<String> getCurrentAuditor() {
        UserDetails user;
        try {
            user = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
            return Optional.ofNullable(user.getUsername());
        }catch (Exception e){
            return Optional.empty();
        }
    }
}

Springboot啟用Spring Data JPA Auditing(審計功能)

Auditing功能簡介

先貼上Spring Data JPA的官方文檔

項目中每條數據在創(chuàng)建修改的時候,我們都需要記錄它創(chuàng)建人,創(chuàng)建時間,修改人,修改時間。如果每次新增的時候都去手動set,代碼冗余且顯得很不友好

spring data JPA 為我們提供了審計功能,英文是 Auditing

在這里插入圖片描述

Auditing包括了四個注解,從名字就能看出它們的作用

  • @CreatedBy:創(chuàng)建人,在這個實體被insert的時候,會設置值
  • @LastModifiedBy:最后一次修改人,在這個實體每次被更新的時候,會設置值
  • @CreatedDate:創(chuàng)建時間,在這個實體被insert的時候,會設置值
  • @LastModifiedDate:最后一次修改時間,在這個實體每次被更新的時候,會設置值

如何啟用

1.啟動類上加@EnableJpaAuditing注解

在這里插入圖片描述

2.實體類上加@EntityListeners(AuditingEntityListener.class)

在這里插入圖片描述

3.屬性上面使用對應注解

在這里插入圖片描述

使用CreatedBy和LastModifiedBy時

JPA并不知道你的這個字段的值是什么,需要自己實現AuditorAware接口

import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Optional;
/**
 *  使用@CreatedBy或@LastModifiedBy 則必須實現AuditorAware接口重寫getCurrentAuditor方法
 * 在定義使用@CreatedBy或@LastModifiedBy時,屬性類型必須與AuditorAware接口的泛型類型相同
 */
@Configuration
public class SpringSecurityAuditorAware  implements AuditorAware<String> {
    @Override
    public Optional<String> getCurrentAuditor() {
        UserDetails userDetails;
        try {
            userDetails =  (UserDetails)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
            return Optional.ofNullable(userDetails.getUsername());
        }catch (Exception e){
            return Optional.empty();
        }
    }

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

相關文章

  • java Springboot實現多文件上傳功能

    java Springboot實現多文件上傳功能

    這篇文章主要為大家詳細介紹了java Springboot實現多文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • java中Map集合的常用方法總結大全

    java中Map集合的常用方法總結大全

    開發(fā)中最常用的就是List集合和Map集合,Map集合是基于java核心類java.util中的,下面這篇文章主要給大家總結介紹了關于java中Map集合的一些常用方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • Spring?Security?登錄時添加圖形驗證碼實現實例

    Spring?Security?登錄時添加圖形驗證碼實現實例

    這篇文章主要為大家介紹了Spring?Security?登錄時添加圖形驗證碼實現實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • spring-boot使用Admin監(jiān)控應用的方法

    spring-boot使用Admin監(jiān)控應用的方法

    本篇文章主要介紹了spring-boot使用Admin監(jiān)控應用的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 淺談java Iterator.remove()方法的用法(詳解)

    淺談java Iterator.remove()方法的用法(詳解)

    下面小編就為大家?guī)硪黄獪\談java Iterator.remove()方法的用法(詳解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • IDEA中創(chuàng)建properties配置文件

    IDEA中創(chuàng)建properties配置文件

    我們在j2ee當中,連接數據庫的時候經常會用到properties配置文件,本文主要介紹了IDEA中創(chuàng)建properties配置文件,具有一定的參考價值,?感興趣的可以了解一下
    2024-04-04
  • Netty之使用DelimiterBasedFrameDecoder進行消息分隔詳解

    Netty之使用DelimiterBasedFrameDecoder進行消息分隔詳解

    這篇文章主要介紹了Netty之使用DelimiterBasedFrameDecoder進行消息分隔詳解,在使用Netty進行TCP消息傳輸時,為了上層協(xié)議能夠對消息正確區(qū)分,避免粘包和拆包導致的問題,一般可以通過消息定長、將回車換行符作為消息結束符,需要的朋友可以參考下
    2023-12-12
  • JAVA進階之HashMap底層實現解析

    JAVA進階之HashMap底層實現解析

    Hashmap是java面試中經常遇到的面試題,大部分都會問其底層原理與實現,為了能夠溫故而知新,特地寫了這篇文章,以便時時學習
    2021-11-11
  • Java反射之類的實例對象的三種表示方式總結

    Java反射之類的實例對象的三種表示方式總結

    下面小編就為大家?guī)硪黄狫ava反射之類的實例對象的三種表示方式總結。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Java中數組復制的三種方式小結

    Java中數組復制的三種方式小結

    在Java中,數組復制是一種常見的操作,它允許開發(fā)人員在不修改原始數組的情況下創(chuàng)建一個新的數組,本文就來介紹三種方法,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02

最新評論

鄢陵县| 桓台县| 鄂尔多斯市| 张家口市| 杨浦区| 雷州市| 长海县| 宣威市| 大荔县| 武冈市| 松原市| 漠河县| 张家口市| 丰原市| 郓城县| 崇文区| 黄梅县| 南康市| 都安| 错那县| 新沂市| 烟台市| 溧阳市| 曲麻莱县| 乌审旗| 乌拉特后旗| 镇平县| 垦利县| 石景山区| 通江县| 南部县| 金山区| 德清县| 沁阳市| 阳山县| 长宁区| 淅川县| 东兰县| 芜湖市| 改则县| 南涧|