孫衛琴的《精通JPA與Hibernate》的讀書筆記: 經過JPA API調用存儲過程

如下SQL代碼定義了一個名爲findCustomers的存儲過程,p_age爲輸入參數,p_count爲輸出參數:java

delimiter  //
create procedure findCustomers(in p_age integer,out p_count integer)
begin
select count(*) into p_count from CUSTOMERS where AGE>p_age;
select name from CUSTOMERS;
end  //

JPA API中的StoredProcedureQuery接口可以調用存儲過程,而且還能設置輸入參數,以及讀取輸出參數:ide

StoredProcedureQuery query=entityManager
           .createStoredProcedureQuery("findCustomers");

//註冊參數
query.registerStoredProcedureParameter(1,
                           Integer.class,ParameterMode.IN);
query.registerStoredProcedureParameter(2,
                           Integer.class,ParameterMode.OUT);
int age=15;
query.setParameter(1,age); //設置參數
List names=query.getResultList();  //調用存儲過程

for(Object name:names)  //遍歷查詢結果
  System.out.println((String)name);

//讀取輸出參數
System.out.println("年齡大於"+age+"的客戶數目:"
          +(Integer)query.getOutputParameterValue(2));

在這裏插入圖片描述

相關文章
相關標籤/搜索