要呼叫儲存過程,我們可以通過
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...