Unsere häufig verwendeten Betriebsdatenbanksprache SQL -Anweisungen müssen zuerst zusammengestellt und dann bei der Ausführung ausgeführt werden. Speichernde Prozedur ist eine Reihe von SQL -Anweisungen, um spezifische Funktionen zu erfüllen. Nach der Zusammenstellung wird es in der Datenbank gespeichert. Der Benutzer ruft und führt dies aus, indem der Name der gespeicherten Prozedur angibt und Parameter angibt (wenn die gespeicherte Prozedur Parameter enthält).
Eine gespeicherte Prozedur ist eine programmierbare Funktion, die in einer Datenbank erstellt und gespeichert wird. Es kann aus SQL -Anweisungen und einigen speziellen Kontrollstrukturen bestehen. Speichernde Prozeduren sind sehr nützlich, wenn Sie dieselbe Funktion auf verschiedenen Anwendungen oder Plattformen ausführen oder bestimmte Funktionen zusammenfassen möchten. Speichernde Verfahren in Datenbanken können als Simulationen objektorientierter Methoden in der Programmierung angesehen werden. Es ermöglicht die Steuerung, wie auf Daten zugegriffen werden.
1. gespeicherte Verfahren verbessern die Funktionalität und Flexibilität der SQL -Sprache. Speichernde Verfahren können in Aussagen der Durchflussregelung geschrieben werden, die eine starke Flexibilität aufweisen und komplexe Urteile und komplexere Operationen abschließen können.
2. Gespeicherte Verfahren ermöglichen es, Standardkomponenten zu programmieren. Nachdem ein gespeicherter Verfahren erstellt wurde, kann dies mehrmals im Programm aufgerufen werden, ohne die SQL -Anweisung des gespeicherten Prozedur umschreiben zu müssen. Darüber hinaus können Datenbankfachleute gespeicherte Prozeduren jederzeit ändern, ohne dass sich der Anwendungsquellcode auswirkt.
3. Gespeicherte Verfahren können eine schnellere Ausführungsgeschwindigkeit erreichen. Wenn ein Betrieb eine große Menge an Transaktions-SQL-Code enthält oder mehrmals ausgeführt wird, sind gespeicherte Verfahren viel schneller als die Stapelverarbeitung. Weil gespeicherte Verfahren vorkompiliert sind. Wenn ein gespeicherter Verfahren zum ersten Mal ausgeführt wird, analysiert und optimiert der Optimierer es und gibt den Ausführungsplan an, der letztendlich in der Systemtabelle gespeichert wird. Die Batch-Verarbeitungs-Transaktions-SQL-Anweisungen müssen jedes Mal zusammengestellt und optimiert werden, was relativ langsam ist.
4. Gespeicherte Verfahren können den Netzwerkverkehr durch rezeptfreie Reduzierung verringern. Für Operationen (z. B. Abfrage, Änderung) desselben Datenbankobjekts, wenn die an diesem Vorgang beteiligte Transaktions-SQL-Anweisung vom Organisationsprozess gespeichert wird, wird bei der Aufforderung des Client-Computers nur die Call-Anweisung im Netzwerk übertragen, wodurch der Netzwerkverkehr und die Reduzierung der Netzwerkbelastung erhöht wird.
5. gespeicherte Verfahren können als Sicherheitsmechanismus voll genutzt werden. Systemadministratoren können Zugriffsrechte auf entsprechende Daten einschränken, indem sie Berechtigungen auf ein bestimmtes gespeichertes Verfahren ausführen, den Zugriff auf Daten durch nicht autorisierte Benutzer vermeiden und die Datensicherheit sicherstellen.
1. Nicht einfach zu pflegen, sobald sich die Logik ändert, ist es problematisch, sie zu ändern
2. Wenn die Person, die dieses gespeicherte Verfahren schrieb, verlässt, ist es wahrscheinlich eine Katastrophe für die Person, die ihren Code übernommen hat, weil andere Ihre Programmlogik und Ihre Speicherlogik noch verstehen müssen. Nicht förderlich für die Expansion.
3. Der größte Nachteil! Obwohl gespeicherte Verfahren den Code reduzieren und die Entwicklungseffizienz verbessern können. Eines ist jedoch sehr tödlich, es ist zu leistungsverwendet.
Das Folgende ist ein Code, um das von MySQL gespeicherte Verfahren in MyBatis vorzustellen.
## 1. Es gibt Schülertabellenstudenten (ID, Name, Alter, Geld) ## 2. Erstellen Sie ein gespeichertes Verfahren zum Abfragen von Studententabelleninformationen: Gremiter | Create Procedure ShowAllstu () SELECT SELECT * Aus der Schülerordnung von ID Desc Limit 6; Enddelimiter ## 2. Erstellen Sie eine gespeicherte Prozedur zum Löschen von Datensätzen (über Studenten -ID): `` `Delimiter | Erstellen Sie die Prozedur DelbyId (D int (11)) mit dem Schüler mit dem Schüler mit id = d; Enddelimiter ## 3. Erstellen Sie ein Projekt in Maven: (weggelassen) //pox.xml Konfiguration: <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlsschema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.metar</groupId> <artifactId>Mybatis-mysql</artifactId> <packaging>war</packaging> <version>1.0</version> <name>Mybatis-mysql Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <Scope> test </scope> </abhängig> <abhängigkeit> <gruppe> org.projectlombok </GroupId> <artifactId> lombok </artifactid> <version> 1.16.20 </Version> <Schops <version>3.4.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <testSourceDirectory>src/test/java</testSourceDirectory> <sourceDirectory>src/main/java</sourceDirectory> <!-- Handling the resource configuration Die Datei kann nicht geladen werden-> <ressourcen> <ressourcen> <Direcidory> src/main/java </verzeichnis> <clyse> <Clänen> **/*. <Clycloy> **/*. Eigenschaften </include> </ressourcen> </build> </project> ## 4. Link-Datenbankeintragskonfiguration (weggelassen), Konfiguration: mybatis-config.xml: <? "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <! <typealias> <!-Konfigurieren Sie die Modellklasse alias-> <!-<typealias type = "com.fz.entity </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${db.driver}"/> <property name="url" value="${db.url}"/> <property name="username" value="${db.user}"/> <property name="password" value="${db.password}"/> </dataSource> </environment> </environments> <mappers> <!--<mapper/>--> <package name="com.fz.mapper"/> </mappers> </configuration>##5. Erstellen Sie Entity Class Object: // Paket: com/fz/entity/student @data public class student {private int id; privater Zeichenfolge Name; privates int Alter; privates Doppelgeld; } ## 6. Erstellen Sie StudentMapper Interface -Klasse und StudentMapper.xml -Konfiguration; // studentMapper interface studentMapper {// gespeicherte Prozedurabfrage 6 Datensätze; öffentliche Liste <Student> query (); // gespeichertes Verfahren löscht einen Datensatz (nach ID) öffentlich int delbyid (int id); } //Studentmapper.xml configuration``` <xml Version = "1.0" coding = "utf-8"?> <! DocType mapper public "-// mybatis.org//dtd mapper 3.0 // en" http://mybatis.org/dtd/dtd/dtd/dtd/mybatis-3-m-mmybatis.org/dtd/mybatis-3-3-3-3-3-3-3-mmybatis.org/dtd/mybatis- namespace = "com.fz.mapper.studentMapper"> <select id = "query" resultType = "student"> {call showAllstu ()} </select> <delete id = "delbyId" parameterType = "int"> {call delbyid (#{id})} </delete> </delete> </mapper Testklasse: // test/java/com/Demo01 Paket com; import com.fz.entity.student; import com.fz.mapper.studentmapper; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlSessionFactory; import org.apache.ibatis.session.sqlSessionFactoryBuilder; import org.junit.after; import org.junit.before; import org.junit.test; importieren java.io.ioException; importieren java.io.inputstream; importieren java.util.list; öffentliche Klasse Demo01 {Protected SQLSessionFactory SF; geschützte SQLSession SS; @Test public void test () {studentMapper SDD = this.ss.getMapper (studentMapper.class); List <Student> ATD = SDD.Query (); für (Student SD: ATD) {System.out.println (SD); } sdd.delbyid (18); } @Before public void init () {InputStream ist = null; try {is = ressourcen.getResourceAsStream ("mybatis-config.xml"); this.sf = new SQLSessionFactoryBuilder (). Build (IS); this.SS = this.sf.OpenSession (); } catch (ioException e) {e.printstacktrace (); }} @After public void close () {this.ss.commit (); this.ss.close (); }}Wieder auffüllen:
Sehen wir uns die Syntax der gespeicherten Verfahren an
1 Erstellen Sie eine gespeicherte Prozedur
Erstellen Sie die Prozedur sp_name () beginnen ......... Ende
2 Aufrufen von gespeicherten Verfahren
call sp_name()
Hinweis: Der Name des gespeicherten Prozedur muss von Klammern folgen, auch wenn die gespeicherte Prozedur keine Parameter übergeben hat.
3 Löschen Sie gespeicherte Verfahren
drop procedure sp_name//
Hinweis: Sie können eine andere gespeicherte Prozedur in einer gespeicherten Prozedur nicht löschen. Sie können nur eine andere gespeicherte Prozedur aufrufen.
4 andere gemeinsame Befehle
show procedure status
Zeigt grundlegende Informationen aller gespeicherten Prozeduren an, die in der Datenbank gespeichert sind, einschließlich der Datenbank, zu der sie gehört, der Name des gespeicherten Prozedur, der Erstellungszeit usw.
show create procedure sp_name
Zeigt detaillierte Informationen zu einem von MySQL gespeicherten Prozedur an
Zusammenfassen
Die obige Methode ist die Methode zur Verwendung von MySQL -gespeicherten Verfahren in MyBatis, die Ihnen vorgestellt wurden. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!