Hibernate註解 和 RequestParam和PathVariable和RequestBody三者的使用和區別

Hibernate註解


@JoinColumn 註解的作用:用來指定與所操作實體或實體集合相關聯的數據庫表中的列字段。
joinColumns是主操作表的中間表列,而inverseJoinColumns是副操作表的中間表列
​
@JsonProperty :此註解用於屬性上,作用是把該屬性的名稱序列化爲另外一個名稱,如把trueName屬性序列化爲name,@JsonProperty("name")。對屬性名稱重命名
​
@Column和@JsonProperty區別:
變量名爲userName,希望jackson在把對象轉換爲json串時變爲 user_name。可以使用@JsonProperty註解。
變量名爲 createTime, 希望JPA自動對應到數據庫的 create_time 字段,可以使用  @Column 註解。
​
@JsonIgnore:返回的json數據即不包含該屬性,此註解用於屬性或者方法上(最好是屬性上),用來完全忽略被註解的字段和方法對應的屬性,即便這個字段或方法可以被自動檢測到或者還有其他的註解,一般標記在屬性或者方法上,返回的json數據即不包含該屬性
​
@JsonIgnoreProperties此註解是類註解,作用是json序列化時將java bean中的一些屬性忽略掉,序列化和反序列化都受影響。
​
@JsonFormat此註解用於屬性或者方法上(最好是屬性上),可以方便的把Date類型直接轉化爲我們想要的模式。
例子:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date updateTime;
​
@JsonSerialize此註解用於屬性或者getter方法上,用於在序列化時嵌入我們自定義的代碼,比如序列化一個double時在其後面限制兩位小數點。
​
@JsonDeserialize此註解用於屬性或者setter方法上,用於在反序列化時可以嵌入我們自定義的代碼,類似於上面的@JsonSerialize。
​
@JsonInclude 屬性值爲null的不參與序列化。例子:@JsonInclude(Include.NON_NULL)
@GeneratorValue註解----JPA通用策略生成器
@GeneratedValue註解存在的意義主要就是爲一個實體生成一個唯一標識的主鍵(JPA要求每一個實體Entity,必須有且只有一個主鍵),@GeneratedValue提供了主鍵的生成策略
​
@GenericGenerator註解----自定義主鍵生成策略
​
​
@Lob註解表示屬性將被持久化爲Blob或者Clob類型, 具體取決於屬性的類型,java.sql.Clob, Character[],char[] 和 java.lang.String這些類型的屬性都被持久化爲Clob類型, 而java.sql.Blob,Byte[], byte[] 和 serializable類型則被持久化爲Blob類型.
​
使用@Transient這個註解可以讓其不成爲數據庫的字段

 

JPA表與表的關係
fetch:加載方式  FetchType.LAZE  懶加載   FetchType.EAGER 同步加載(非懶加載模式)
cascade:表與表之間的級聯關係(屬性很多,可以百度) 在常見的
        ALL:所有的關係
        PERSIST:級聯持久化操作
        merge:級聯合並操作
        REMOVE:級聯刪除操作
        REFRESH:級聯刷新操作
        DETACH:級聯分離操作
    

@RequestParam註解

顧名思義:獲取參數,即是獲取傳送過來的參數;例如獲取下面鏈接的id參數值:

//鏈接(注意鏈接格式區別)
http://localhost:8090/hello?id=2
//使用@RequestParam註解獲取id
public String Demo1(@RequestParam String id){
    System.out.println("鏈接中請求參數的id:"+id);
    return null;
}

此時@RequestParam的作用就可以獲取id下來並且作爲形參傳給方法體裏面的id

@PathVariable註解

顧名思義:路徑變量,即是獲取鏈接路徑上的變量,例如獲取下面鏈接的id

//鏈接(注意比較上面一條鏈接)
http://localhost:8090/hello/2
//使用@PathVariable註解獲取id
@RequestMapping(value = "/getBook/{id}", method = RequestMethod.GET)
public String getBook(@PathVariable Integer id) {
     try {
            system.out.println("路徑上的id:"+id);
        } catch (ParseException e) {
            e.printStackTrace();
    }
    return null;
}

此時@PathVariable的作用是將路徑上的id獲取進來傳遞給方法體裏面的形參id,但是變量名稱必須一樣,比如這裏:value = "/getBook/{id}"@PathVariable Integer id;兩個都要是id,如果不同則報錯;

@RequestBody註解

首先說下,@RequestBody註解一般主要是用來處理content-type:"application/json charset=utf-8"或者content-type:"application/xml charset=utf-8"兩種請求數據,一般是異步請求用的比較多些,例如:

//異步請求部分代碼
$.ajax({
        url:"/hello",
        type:"POST",
        data:'{"id":"123","name":"chenyc"}',
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert(data);
        }
    });
//@requestBody註解獲取數據代碼
@requestMapping("/hello")
    public String hello(@requestBody Integer id,@requestBody String name){
      System.out.println("id:"+id+";"+"name:"+name);
    }

此時@requestBody註解就可以獲取到請求中的各個參數然後賦值到相對應的方法形參上,另外,當有一個實體類User包含了idname的元素的話,在方法裏面直接可以寫@requestBody User user就會自動封裝好給我們使用的了,不用麻煩像這樣@requestBody Integer id,@requestBody String name一個一個的封裝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章