1、儲存過程
假設儲存過程如下:
create or replace package test_pkg as
procedure in_only_test (inparam1 in varchar2);
procedure in_and_out_test (inparam1 in varchar2, outparam1 out varchar2);
end test_pkg;
/create or replace package body test_pkg as
procedure in_only_test(inparam1 in varchar2) as
begin
dbms_output.put_line('in_only_test');
end in_only_test;
procedure in_and_out_test(inparam1 in varchar2, outparam1 out varchar2) as
begin
outparam1 := 'woohoo im an outparam, and this is my inparam ' || inparam1;
end in_and_out_test;
end test_pkg;12
3456
78910
1112
1314
15這裡有兩個儲存過程:
1)in_only_test
它需要乙個輸入引數inparam1,但不返回值
2)in_and_out_test
它需要乙個輸入引數inparam1,且返回值outparam1
2、@namedstoredprocedurequeries
我們可以使用@namedstoredprocedurequeries注釋來呼叫儲存過程。
@entity
@table(name = "mytable")
@namedstoredprocedurequeries(),
@namedstoredprocedurequery(name = "in_and_out_test", procedurename = "test_pkg.in_and_out_test", parameters = ) })
public class mytable implements serializable 12
3456
78910
關鍵要點:
儲存過程使用了注釋@namedstoredprocedurequery,並繫結到乙個jpa表。
procedurename是儲存過程的名字
name是jpa中的儲存過程的名字
使用注釋@storedprocedureparameter來定義儲存過程使用的in/out引數
3、建立spring data jpa資料庫
下面我們來建立spring data jpa資料庫:
public inte***ce mytablerepository extends crudrepository12
3456
7關鍵要點:
@procedure的name引數必須匹配@namedstoredprocedurequery的name
@param必須匹配@storedprocedureparameter注釋的name引數
返回型別必須匹配:in_only_test儲存過程返回是void,in_and_out_test儲存過程必須返回string
4、呼叫
我們可以這樣呼叫儲存過程:
// 向儲存過程傳遞引數並返回值
string inparam = "hi im an inputparam";
string outparam = mytablerepository.inandouttest(inparam);
assert.assertequals(outparam, "woohoo im an outparam, and this is my inparam hi im an inputparam");
// 向儲存過程傳遞引數不返回值
mytablerepository.inonlytest(inparam);12
3456
5、其它技巧
如果上面的**不工作,可以這麼解決。定義自定義的repository來呼叫儲存過程昨晚本地查詢。
定義自定義的repository:
public inte***ce mytablerepositorycustom 12
3然後要確保主repository類繼承了這個介面。
public inte***ce mytablerepository extends crudrepository, mytablerepositorycustom 12
6、建立repository實現類
接著該建立repository實現類了:
public class mytablerepositoryimpl implements mytablerepositorycustom 12
345}
可以以常規的方式進行呼叫:
@autowired
mytablerepository mytablerepository;
// 呼叫儲存過程
mytablerepository.inonlytest(inparam1);12
34是不是很簡單。
Spring Data JPA呼叫儲存過程例項
jpa連線到資料庫,呼叫儲存過程,這樣的需求很常見。本文就針對這一點,講述如何使用spring data jpa呼叫儲存過程的方法。假設儲存過程如下 create or replace package test pkg as procedure in only test inparam1 in va...
Spring Data JPA高階 呼叫儲存過程
本篇文章主要介紹了spring data jpa呼叫儲存過程例項 具有一定的參考價值,感興趣的小夥伴們可以參考一下。jpa連線到資料庫,呼叫儲存過程,這樣的需求很常見。本文就針對這一點,講述如何使用spring data jpa呼叫儲存過程的方法。1 儲存過程 假設儲存過程如下 create or ...
spring data jpa實體繼承
spring jpa中我們要將sql對映到物件,尤其是在spring boot這種高度自動化的環境下使用,大量的最優目錄結構與命名規則可以大大降低配置,約定大於配置貫穿其中。例如我們定義查詢dao,繼承jparepository即可。然後返回的物件,我們可以定義model entity table ...