亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring Data JPA調(diào)用存儲(chǔ)過程實(shí)例代碼

 更新時(shí)間:2017年04月17日 11:18:10   作者:資深架構(gòu)師  
本篇文章主要介紹了Spring Data JPA調(diào)用存儲(chǔ)過程實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

JPA連接到數(shù)據(jù)庫(kù),調(diào)用存儲(chǔ)過程,這樣的需求很常見。本文就針對(duì)這一點(diǎn),講述如何使用spring Data JPA調(diào)用存儲(chǔ)過程的方法。

1、存儲(chǔ)過程

假設(shè)存儲(chǔ)過程如下:

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;

這里有兩個(gè)存儲(chǔ)過程:

1)in_only_test

它需要一個(gè)輸入?yún)?shù)inParam1,但不返回值

2)in_and_out_test

它需要一個(gè)輸入?yún)?shù)inParam1,且返回值outParam1

2、@NamedStoredProcedureQueries

我們可以使用@NamedStoredProcedureQueries注釋來調(diào)用存儲(chǔ)過程。

@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 {
}

關(guān)鍵要點(diǎn):

  1. 存儲(chǔ)過程使用了注釋@NamedStoredProcedureQuery,并綁定到一個(gè)JPA表。
  2. procedureName是存儲(chǔ)過程的名字
  3. name是JPA中的存儲(chǔ)過程的名字
  4. 使用注釋@StoredProcedureParameter來定義存儲(chǔ)過程使用的IN/OUT參數(shù)

3、創(chuàng)建Spring Data JPA數(shù)據(jù)庫(kù)

下面我們來創(chuàng)建Spring Data JPA數(shù)據(jù)庫(kù):

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);
}

關(guān)鍵要點(diǎn):

  1. @Procedure的name參數(shù)必須匹配@NamedStoredProcedureQuery的name
  2. @Param必須匹配@StoredProcedureParameter注釋的name參數(shù)
  3. 返回類型必須匹配:in_only_test存儲(chǔ)過程返回是void,in_and_out_test存儲(chǔ)過程必須返回String

4、調(diào)用

我們可以這樣調(diào)用存儲(chǔ)過程:

  // 向存儲(chǔ)過程傳遞參數(shù)并返回值
  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");
  // 向存儲(chǔ)過程傳遞參數(shù)不返回值
  myTableRepository.inOnlyTest(inParam);

5、其它技巧

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

定義自定義的Repository:

public interface MyTableRepositoryCustom {
  void inOnlyTest(String inParam1);
}

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

復(fù)制代碼 代碼如下:

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

6、創(chuàng)建Repository實(shí)現(xiàn)類

接著該創(chuàng)建Repository實(shí)現(xiàn)類了:

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();
}
}

可以以常規(guī)的方式進(jìn)行調(diào)用:

@Autowired
MyTableRepository myTableRepository;
// 調(diào)用存儲(chǔ)過程
myTableRepository.inOnlyTest(inParam1);

是不是很簡(jiǎn)單。以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Java對(duì)象結(jié)構(gòu)與對(duì)象鎖的升級(jí)

    詳解Java對(duì)象結(jié)構(gòu)與對(duì)象鎖的升級(jí)

    這篇文章主要為大家詳細(xì)介紹了Java對(duì)象結(jié)構(gòu)與對(duì)象鎖的升級(jí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • SpringBoot之logback-spring.xml不生效的解決方法

    SpringBoot之logback-spring.xml不生效的解決方法

    這篇文章主要介紹了SpringBoot之logback-spring.xml不生效的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java數(shù)組隊(duì)列概念與用法實(shí)例分析

    Java數(shù)組隊(duì)列概念與用法實(shí)例分析

    這篇文章主要介紹了Java數(shù)組隊(duì)列概念與用法,結(jié)合實(shí)例形式分析了Java數(shù)組隊(duì)列相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • SpringBoot多模塊打包部署Docker的項(xiàng)目實(shí)戰(zhàn)

    SpringBoot多模塊打包部署Docker的項(xiàng)目實(shí)戰(zhàn)

    本文通過介紹最常見的Maven管理的Spring Boot項(xiàng)目多模塊打包部署Docker來介紹一下項(xiàng)目部署過程中操作流程和幾個(gè)需要注意的點(diǎn),具有一定的參加價(jià)值,感興趣的可以了解一下
    2023-08-08
  • SpringBoot使用 druid 連接池來優(yōu)化分頁(yè)語句

    SpringBoot使用 druid 連接池來優(yōu)化分頁(yè)語句

    這篇文章主要介紹了SpringBoot使用 druid 連接池來優(yōu)化分頁(yè)語句,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java經(jīng)典面試題匯總:Spring Boot

    Java經(jīng)典面試題匯總:Spring Boot

    本篇總結(jié)的是Spring-Boot框架相關(guān)的面試題,后續(xù)會(huì)持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實(shí)習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯(cuò)誤還望大家多多包涵,不吝賜教,謝謝
    2021-07-07
  • AJAX+JAVA用戶登陸注冊(cè)驗(yàn)證的實(shí)現(xiàn)代碼

    AJAX+JAVA用戶登陸注冊(cè)驗(yàn)證的實(shí)現(xiàn)代碼

    這篇文章主要介紹了AJAX+JAVA用戶登陸注冊(cè)驗(yàn)證的實(shí)現(xiàn)代碼,通過ajax異步刷新頁(yè)面驗(yàn)證用戶輸入的賬號(hào)密碼是否在數(shù)據(jù)庫(kù)中存在。非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-06-06
  • 一文搞懂Java中對(duì)象池的實(shí)現(xiàn)

    一文搞懂Java中對(duì)象池的實(shí)現(xiàn)

    池化并不是什么新鮮的技術(shù),它更像一種軟件設(shè)計(jì)模式,主要功能是緩存一組已經(jīng)初始化的對(duì)象,以供隨時(shí)可以使用。本文將為大家詳細(xì)講講Java中對(duì)象池的實(shí)現(xiàn),需要的可以參考一下
    2022-07-07
  • Spring-cloud 服務(wù)發(fā)現(xiàn)與消費(fèi)(以ribbon為例)

    Spring-cloud 服務(wù)發(fā)現(xiàn)與消費(fèi)(以ribbon為例)

    這篇文章主要介紹了Spring-cloud 服務(wù)發(fā)現(xiàn)與消費(fèi)(以ribbon為例),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • springboot項(xiàng)目關(guān)閉swagger如何防止漏洞掃描

    springboot項(xiàng)目關(guān)閉swagger如何防止漏洞掃描

    這篇文章主要介紹了springboot項(xiàng)目關(guān)閉swagger如何防止漏洞掃描,本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05

最新評(píng)論