色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Data JPA怎么調(diào)用存儲(chǔ)

瀏覽:9日期:2023-11-30 10:09:03

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

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):

存儲(chǔ)過程使用了注釋@NamedStoredProcedureQuery,并綁定到一個(gè)JPA表。

procedureName是存儲(chǔ)過程的名字

name是JPA中的存儲(chǔ)過程的名字

使用注釋@StoredProcedureParameter來定義存儲(chǔ)過程使用的IN/OUT參數(shù)

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

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

public interface MyTableRepository extends CrudRepository

@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):

@Procedure的name參數(shù)必須匹配@NamedStoredProcedureQuery的name

@Param必須匹配@StoredProcedureParameter注釋的name參數(shù)

返回類型必須匹配: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

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

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 亚洲第一免费 | 国产盗摄一区二区三区 | 老色歌uuu26 老师张开腿让我爽了一夜视频 | 日韩成人一级 | 欧美性猛交xxxxbbb | 欧美日韩国产一区三区 | 日本视频在线观看不卡高清免费 | 日本欧美做爰全免费的视频 | 国产在线a | 日韩欧美一区二区三区不卡视频 | 亚洲精品成人久久 | 在线精品国内外视频 | 久久亚洲国产欧洲精品一 | 成人欧美视频在线观看 | 亚洲gogo人体大胆西西安徽 | 免费观看呢日本天堂视频 | 成年人免费视频观看 | 欧美一区不卡二区不卡三区 | 久久精品久久精品 | 免费嗨片 | 亚洲成a人片在线网站 | 中国高清色视频www 中国黄色网址大全 | 中文国产成人精品久久无广告 | 欧美日韩不卡一区 | 久久亚洲国产成人影院 | 一区二区网站在线观看 | 欧美成人亚洲国产精品 | 牛牛本精品99久久精品88m | 久久频这里精品香蕉久久 | 国产成人午夜精品免费视频 | 中文字幕中文字幕在线 | 国产成人mv 在线播放 | 男人天堂中文字幕 | 青青草国产免费国产是公开 | 日本一级高清不卡视频在线 | 免费看岛国视频在线观看 | 亚洲偷偷自拍 | 欧美一区二区三区不卡免费观看 | 在线视频日本 | 狠狠澡夜夜澡人人爽 | 欧洲亚洲一区 |