国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Data JPA調用存儲過程實例代碼

Spring Data JPA調用存儲過程實例代碼

2020-09-12 15:55資深架構師 Java教程

本篇文章主要介紹了Spring Data JPA調用存儲過程實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

JPA連接到數據庫,調用存儲過程,這樣的需求很常見。本文就針對這一點,講述如何使用spring Data JPA調用存儲過程的方法。

1、存儲過程

假設存儲過程如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;

這里有兩個存儲過程:

1)in_only_test

它需要一個輸入參數inParam1,但不返回值

2)in_and_out_test

它需要一個輸入參數inParam1,且返回值outParam1

2、@NamedStoredProcedureQueries

我們可以使用@NamedStoredProcedureQueries注釋來調用存儲過程。

?
1
2
3
4
5
6
7
8
9
10
@Entity
@Table(name = "MYTABLE")
@NamedStoredProcedureQueries({
    @NamedStoredProcedureQuery(name = "in_only_test", procedureName = "test_pkg.in_only_test", parameters = {
        @StoredProcedureParameter(mode = ParameterMode.IN, name = "inParam1", type = String.class) }),
    @NamedStoredProcedureQuery(name = "in_and_out_test", procedureName = "test_pkg.in_and_out_test", parameters = {
        @StoredProcedureParameter(mode = ParameterMode.IN, name = "inParam1", type = String.class),
        @StoredProcedureParameter(mode = ParameterMode.OUT, name = "outParam1", type = String.class) }) })
public class MyTable implements Serializable {
}

關鍵要點:

  1. 存儲過程使用了注釋@NamedStoredProcedureQuery,并綁定到一個JPA表。

  2. procedureName是存儲過程的名字

  3. name是JPA中的存儲過程的名字

  4. 使用注釋@StoredProcedureParameter來定義存儲過程使用的IN/OUT參數

3、創建Spring Data JPA數據庫

下面我們來創建Spring Data JPA數據庫:

?
1
2
3
4
5
6
7
public interface MyTableRepository extends CrudRepository<MyTable, Long> {
  @Procedure(name = "in_only_test")
  void inOnlyTest(@Param("inParam1") String inParam1);
 
  @Procedure(name = "in_and_out_test")
  String inAndOutTest(@Param("inParam1") String inParam1);
}

關鍵要點:

  1. @Procedure的name參數必須匹配@NamedStoredProcedureQuery的name

  2. @Param必須匹配@StoredProcedureParameter注釋的name參數

  3. 返回類型必須匹配:in_only_test存儲過程返回是void,in_and_out_test存儲過程必須返回String

4、調用

我們可以這樣調用存儲過程:

?
1
2
3
4
5
6
// 向存儲過程傳遞參數并返回值
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);

5、其它技巧

如果上面的代碼不工作,可以這么解決。定義自定義的Repository來調用存儲過程昨晚本地查詢。

定義自定義的Repository:

?
1
2
3
public interface MyTableRepositoryCustom {
  void inOnlyTest(String inParam1);
}

然后要確保主Repository類繼承了這個接口。

 

復制代碼 代碼如下:

public interface MyTableRepository extends CrudRepository<MyTable, Long>, MyTableRepositoryCustom {}

 

 

6、創建Repository實現類

接著該創建Repository實現類了:

?
1
2
3
4
5
6
7
8
9
10
public class MyTableRepositoryImpl implements MyTableRepositoryCustom {
@PersistenceContext
private EntityManager em;
 
@Override
public void inOnlyTest(String inParam1) {
  this.em.createNativeQuery("BEGIN in_only_test(:inParam1); END;").setParameter("inParam1", inParam1)
      .executeUpdate();
}
}

可以以常規的方式進行調用:

?
1
2
3
4
@Autowired
MyTableRepository myTableRepository;
// 調用存儲過程
myTableRepository.inOnlyTest(inParam1);

是不是很簡單。以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/chszs/article/details/50127823

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲日本va中文字幕 | 夜夜春精品视频高清69式 | 欧美日韩高清在线一区 | 亚洲精品久久久 | 欧美黑人一级爽快片淫片高清 | 欧美综合网 | 91色在线观看 | 午夜999| 婷婷四房综合激情五月 | 国产精品一区久久久 | 天天影视色香欲 | 久草av在线播放 | 国产色视频在线观看免费 | 欧美日韩高清在线观看 | 欧美二三区 | 国产欧美中文字幕 | 欧美福利在线观看 | 国产日韩精品视频 | 欧美日韩在线免费 | 在线小视频 | 国产一区二区三区欧美 | 亚洲精品国产第一综合99久久 | 成人国产精品久久 | 国产黄色网址在线观看 | 一区二区三区在线看 | 久久国产精品99久久久久久老狼 | 激情久久久| 国产精品视频一 | 自拍第一页 | 亚洲专区国产精品 | 日韩成人免费中文字幕 | 青春草国产免费福利视频一区 | 夜久久 | 日韩视频一区二区三区 | 视频四区 | 久久国 | 亚洲国产一区二区在线观看 | 狠狠久 | 午夜久久久久久久久久一区二区 | 天堂av在线免费观看 | 91久久久久久久久久久久久 |