So rufen Sie eine gespeicherte Prozedur im Ruhezustand auf
In diesem Lernprogramm erfahren Sie, wie Sie eine Speicherprozedur im Ruhezustand aufrufen.
MySQL-Speicherprozedur
Hier ist eine MySQL-Speicherprozedur, die einen Bestandscode-Parameter akzeptiert und die zugehörigen Bestandsdaten zurückgibt.
DELIMITER $$ CREATE PROCEDURE `GetStocks`(int_stockcode varchar(20)) BEGIN SELECT * FROM stock where stock_code = int_stockcode; END $$ DELIMITER ;
In MySQL können Sie es einfach mit dem Schlüsselwortcallaufrufen:
CALL GetStocks('7277');
Anrufspeicherprozedur im Ruhezustand
Im Ruhezustand gibt es drei Ansätze zum Aufrufen einer Datenbankspeicherprozedur.
1. Native SQL - createSQLQuery
MitcreateSQLQuery() können Sie eine Speicherprozedur direkt aufrufen.
Query query = session.createSQLQuery(
"CALL GetStocks(:stockCode)")
.addEntity(Stock.class)
.setParameter("stockCode", "7277");
List result = query.list();
for(int i=0; i
2. NamedNativeQuery in Annotation
Deklarieren Sie Ihre Speicherprozedur innerhalb der Annotation@NamedNativeQueries.
//Stock.java
...
@NamedNativeQueries({
@NamedNativeQuery(
name = "callStockStoreProcedure",
query = "CALL GetStocks(:stockCode)",
resultClass = Stock.class
)
})
@Entity
@Table(name = "stock")
public class Stock implements java.io.Serializable {
...
Nenne es mitgetNamedQuery().
Query query = session.getNamedQuery("callStockStoreProcedure")
.setParameter("stockCode", "7277");
List result = query.list();
for(int i=0; i
3. SQL-Abfrage in XML-Mapping-Datei
Deklarieren Sie Ihre Speicherprozedur innerhalb des Tags "sql-query".
......
Nenne es mitgetNamedQuery().
Query query = session.getNamedQuery("callStockStoreProcedure")
.setParameter("stockCode", "7277");
List result = query.list();
for(int i=0; i
Fazit
Die oben genannten drei Ansätze machen dasselbe: Rufen Sie eine Speicherprozedur in der Datenbank auf. Es gibt keine großen Unterschiede zwischen den drei Ansätzen. Welche Methode Sie wählen, hängt von Ihren persönlichen Vorlieben ab.