JPA 呼叫儲存

2021-04-23 07:31:53 字數 3034 閱讀 9352

要呼叫儲存過程,我們可以通過

entitymanager

物件的createnativequery()

方法執行

sql 語句(

注意:這裡說的是

sql語句,不是

hpql)

, 呼叫儲存過程的

sql格式如下:

在ejb3

中你可以呼叫的儲存過程有兩種

1.無返回值的儲存過程。

2.返回值為

resultset(以

select

形式返回的值

)的儲存過程(注意:ejb3不能呼叫以out引數返回值的儲存過程。)

下面我們看看幾種具有代表性的儲存過程的呼叫方法.

呼叫無返回值的儲存過程

首先建立乙個名為

addperson

的儲存過程,他的

ddl

如下(注:本例使用的是

mysql

資料庫):

create

procedure

`addperson`()

not deterministic

sql security definer

comment ''

begin

insert into person(`personname`,`***`,`age`) values('

儲存過程

',1,25);

end;

下面的**片斷展示了無返回值儲存過程的呼叫方法:

//呼叫無返回引數的儲存過程

query query = em.createnativequery(

"");

query.executeupdate();

呼叫返回單值的儲存過程

先建立乙個名為

getpersonname

的儲存過程,他有乙個integer型別的輸入引數,儲存過程的

ddl如下(注:本例使用的是

mysql

資料庫):

create

procedure

`getpersonname`

(in pid integer(11))

not deterministic

sql security definer

comment ''

begin

select personname from person where `personid`=

pid;

end;

下面的**片斷展示了返回單值的儲存過程的呼叫方法:

//呼叫返回單個值的儲存過程

query query = em.createnativequery(

"");

query.setparameter(1, new integer(1));

string result = query.

getsingleresult()

.tostring();

呼叫返回表全部列的儲存過程

先建立乙個名為

getpersonlist

的儲存過程,他的

ddl如下(注:本例使用的是

mysql

資料庫):

create

procedure

`getpersonlist`()

not deterministic

sql security definer

comment ''

begin

select * from person;

end;

下面的**片斷展示了

返回表全部列的儲存過程的呼叫方法

,我們可以ejb3 persistence執行環境將列值直接填充入乙個entity的例項(本例填充進

person

物件),並將例項作為結果返回.

//呼叫返回

person

全部列的儲存過程

query query = em.createnativequery(

"",person.class);

list result = query.getresultlist();

。。。while( iterator.hasnext() )

呼叫返回部分列的儲存過程

先建立乙個名為

getpersonpartproperties

的儲存過程,他的

ddl如下(注:本例使用的是

mysql

資料庫):

create

procedure

`getpersonpartproperties`()

not deterministic

sql security definer

comment ''

begin

select personid, personname from person;

end;

下面的**片斷展示了返回部分列的儲存過程的呼叫方法

.//呼叫返回部分列的儲存過程

query query = em.createnativequery(

"");

list result = query.

getresultlist

();

。。。。

while( iterator.hasnext() )

JPA如何呼叫oracle資料庫中的儲存函式?

因系統需求,需要呼叫oracle資料庫中的儲存函式,在網上找了許多篇文章都沒有滿足我的條件,返回值和out值同時能獲取到,jpa的api中貌似沒有,反正我是沒找到,後來同事找的乙個網頁 上找到了解決方法,就是通過jpa來呼叫jdbc的api來實現這個功能,下面就是 session session e...

記JPA資料批量儲存

測試工程為 springboot 測試表結構 阿里的 druid 資料庫連線池sql監控功能 druid 配置 bean public servletregistrationbean statviewservlet bean public filterregistrationbean statfil...

呼叫儲存過程

用乙個命令物件呼叫儲存過程,就是定義儲存過程的名稱,給過程的每個引數新增引數定義,然後執行命令。1.呼叫沒有返回值的儲存過程 呼叫儲存過程的最簡單示例是不給呼叫者返回任何值。下面定義了兩個這樣的儲存過程,乙個用於更新現有的region記錄,另乙個用於刪除指定的region記錄。1 記錄的更新 cre...