日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Data JPA 从入门到精通~@Procedure 储存过程的查询方法

發布時間:2024/7/23 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Data JPA 从入门到精通~@Procedure 储存过程的查询方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們通過 @Procedure 來介紹一下,JPA 對儲存過程的支持。

(1)@Procedure 源碼如下:

public @interface Procedure {// 數據庫里面儲存過程的名稱String value() default "";// 數據庫里面儲存過程的名稱String procedureName() default "";//在EntityManager中的名字,NamedStoredProcedureQuery使用String name() default "";//輸出參數的名字String outputParameterName() default ""; }

(2)首先創建一個儲存過程名字叫 plus1inout 有兩個參數、兩個結果。

CREATE PROCEDURE plus1inout(IN arg int, OUT res int) BEGINSELECT (arg+10) into res; END

(3)我們可以使用 @NamedStoredProcedureQueries 注釋來調用存儲過程,這個必須定義在一個實體上面。

@Entity @NamedStoredProcedureQuery(name = "User.plus1", procedureName = "plus1inout", parameters = { @StoredProcedureParameter(mode = ParameterMode.IN, name = "arg", type = Integer.class), @StoredProcedureParameter(mode = ParameterMode.OUT, name = "res", type = Integer.class) }) public class User {//這個是一個Procedure實體類,可以通過NamedStoredProcedureQueries在這個類里面定義多個儲存過程的查詢。 }

關鍵要點:

  • 存儲過程使用了注釋 @NamedStoredProcedureQuery,并綁定到一個 JPA 表;
  • procedureName 是存儲過程的名字;
  • name 是 JPA 中的存儲過程的名字;
  • 使用注釋 @StoredProcedureParameter 來定義存儲過程使用的 IN/OUT 參數。

(4)直接通過自定義過的 Repository 完成儲存過程的調用。

public interface MyUserRepository extends CrudRepository<User, Long> { @Procedure("plus1inout")//通過儲存過程的名字 Integer explicitlyNamedPlus1inout(Integer arg); @Procedure(procedureName = "plus1inout")//通過儲存過程的名字 Integer plus1inout(Integer arg); @Procedure(name = "User.plus1IO")//自定義的儲存過程的名字 Integer entityAnnotatedCustomNamedProcedurePlus1IO(@Param("arg") Integer arg); }

關鍵要點:

  • @Procedure 的 procedureName 參數必須匹配 @NamedStoredProcedureQuery 的 procedureName。
  • @Procedure 的 name 參數必須匹配 @NamedStoredProcedureQuery 的 name。
  • @Param 必須匹配 @StoredProcedureParameter 注釋的 name 參數。
  • 返回類型必須匹配:in_only_test存儲過程返回是 void,in_and_out_test存儲過程必須返回 String。

總結

以上是生活随笔為你收集整理的Spring Data JPA 从入门到精通~@Procedure 储存过程的查询方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。