Nos instructions SQL de la base de données d'exploitation couramment utilisées doivent d'abord être compilées, puis exécutées lors de l'exécution. La procédure stockée est un ensemble d'instructions SQL pour remplir des fonctions spécifiques. Après compilation, il est stocké dans la base de données. L'utilisateur appelle et l'exécute en spécifiant le nom de la procédure stockée et en donnant des paramètres (si la procédure stockée a des paramètres).
Une procédure stockée est une fonction programmable qui est créée et enregistrée dans une base de données. Il peut être composé d'instructions SQL et de quelques structures de contrôle spéciales. Les procédures stockées sont très utiles lorsque vous souhaitez exécuter la même fonction sur différentes applications ou plateformes, ou encapsuler des fonctions spécifiques. Les procédures stockées dans les bases de données peuvent être considérées comme des simulations de méthodes orientées objet dans la programmation. Il permet de contrôler la façon dont les données sont accessibles.
1. Les procédures stockées améliorent la fonctionnalité et la flexibilité du langage SQL. Les procédures stockées peuvent être rédigées dans des instructions de contrôle des flux, qui ont une forte flexibilité et peuvent effectuer des jugements complexes et des opérations plus complexes.
2. Les procédures stockées permettent de programmer les composants standard. Une fois une procédure stockée créée, elle peut être appelée plusieurs fois dans le programme sans avoir à réécrire l'instruction SQL de la procédure stockée. De plus, les professionnels de la base de données peuvent modifier les procédures stockées à tout moment sans aucun impact sur le code source de l'application.
3. Les procédures stockées peuvent atteindre une vitesse d'exécution plus rapide. Si une opération contient une grande quantité de code de transaction-SQL ou est exécutée plusieurs fois respectivement, les procédures stockées sont beaucoup plus rapides que le traitement par lots. Parce que les procédures stockées sont précompilées. Lorsqu'une procédure stockée est exécutée pour la première fois, l'Optimizer analyse et l'optimise et donne le plan d'exécution qui est finalement stocké dans le tableau du système. Les instructions Transaction-SQL de traitement par lots doivent être compilées et optimisées à chaque fois qu'ils s'exécutent, ce qui est relativement lent.
4. Les procédures stockées peuvent réduire le trafic réseau par gré à gré. Pour les opérations (telles que la requête, la modification) du même objet de base de données, si l'instruction Transaction-SQL impliquée dans cette opération est stockée par le processus d'organisation, alors lorsque la procédure stockée est appelée sur l'ordinateur client, seule l'instruction d'appel est transmise dans le réseau, augmentant ainsi considérablement le trafic réseau et réduisant la charge du réseau.
5. Les procédures stockées peuvent être pleinement utilisées comme mécanisme de sécurité. Les administrateurs système peuvent restreindre les droits d'accès aux données correspondantes en exécutant des autorisations à une certaine procédure stockée, en évitant l'accès aux données par des utilisateurs non autorisés et en garantissant la sécurité des données.
1. Pas facile à entretenir, une fois que la logique change, il est difficile de le modifier
2. Si la personne qui a écrit cette procédure stockée part, c'est probablement un désastre pour la personne qui a repris son code, car d'autres doivent encore comprendre la logique de votre programme et votre logique de stockage. Non propice à l'expansion.
3. Le plus grand inconvénient! Bien que les procédures stockées puissent réduire la quantité de code et améliorer l'efficacité du développement. Mais une chose est très fatale, elle est trop consommatrice de performances.
Ce qui suit est un code pour introduire la procédure stockée MySQL dans MyBatis;
## 1. Il y a un étudiant étudiant (ID, nom, âge, argent) ## 2. Créez une procédure stockée pour interroger les informations sur la table des étudiants: délimiteur | Créer la procédure ShowAllStu () Démarrer Sélectionner * From Student Order by ID DESC LIMIT 6; Enddelimiter ## 2. Créez une procédure stockée pour supprimer les enregistrements (via l'élève ID): `` `Demiter | Créer la procédure Delbyid (D int (11)) commencez à supprimer de l'élève où id = d; Enddelimiter ## 3. Créer un projet dans Maven: (omis) //pox.xml Configuration: <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-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> <proupId> com.metar </prounid> <ArtifActid> MyBatis-Mysql </prounid> <ArtifActid> <Packaging> War </ Packaging> <Dersion> 1.0 </DERNIFRIMINE> <nom> MyBatis-Mysql Maven WebApp </name> <url> http://maven.apache.org </url> <dépendance> <dependency> <proupId> JUnit </proupId> </ Artifactid> JUNIT </ ArtifActid> <Dursed> </Dependency> <Dedency> <ProupId> org.projectlombok </pruipId> <Artifactid> Lombok </ Artifactid> <De version> 1.16.20 </ Version> <Cope> Fourni </cope> </Dedency> <Dependency> <proupId> org.mybatis </propeD> <ArtifActid> MYBATIS </Dependency> <Dedency> <GroupId> MySQL </rom grouped> <ArtifActid> MySQL-Connector-Java </RetifActid> <Dersion> 6.0.6 </ Version> </Dependency> <Dendency> <ProupId> CH.QOS.Logback </proupId> <20.20 <ccope> Test </ccope> </dependency> </dependces> <uild> <inalName> $ {project.artifactid} </stalName> <SestSourceDirectory> SRC / Test / Java </SestourceDirectory> <! <Resource> <Arnutory> SRC / Main / Java </ Directory> <clustred> <clut> ** / *. Xml </rupture> <clut> ** / *. Propriétés </clure> </ incluse> </ Resource> <Derece> <Ar répertoire> SRC / Main / Ressources </ Directory> <clure> <clut> ** / *. </ ressource> </ build> </ project> ## 4. Configuration d'entrée de la base de données de liens (omis), configuration: mybatis-config.xml: <? Xml version = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <! - Ceci est le portail de configuration de la base de données de ressources -> <Propriétés Resource = "DB.Properties" /> <! - Affacer les réglages de journaux -> <paramètres> <paramètres Name = "LogPrefix" Value = "/" <CypeAlias> <! - Configurer les alias de la classe du modèle -> <! - <tycias type = "com.fz.entity.student" alias = "st" /> -> <! - Configurez tous les alias sous le package spécifié // le modèle de classe de modèle Small-Character sous le com.fz.entity package book.java book is the Alias -> <package nom = "com.fz" </pactaliases> <Environments default = "Development"> <Environment id = "Development"> <transactionManager type = "JDBC" /> <DataSource Type = "Poolled"> <propriété name = "Driver" value = "$ {db.driver}" /> <propriété name = "url" value = "$ {db.url}" /> <propriété name = "Url" Value = "$ {db.user}" /> <propriété name = "mot de passe" value = "$ {db.password}" /> </ dataSource> </ Environment> </ Environments> <mappers> <! - </ Mapper /> -> <package name = "com.fz.mapper" /> </mappers> </figuration> ## 5. Créer un objet de classe d'entité: // package: com / fz / entité / étudiant @data public class étudiant {private int id; nom de chaîne privé; Âge privé; Double argent privé; } ## 6. Créer une classe d'interface StudentMapper et StudentMapper.xml Configuration; // Interface StudentMapper StudentMapper {// Requête de procédure stockée 6 enregistrements; Liste publique <Student> Query (); // La procédure stockée supprime un enregistrement (par id) public int Delbyid (int id); } //Studentmapper.xml Configuration```` <? Xml version = "1.0" Encoding = "utf-8"?> <! Doctype Mappen public "- // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.> namespace = "com.fz.mapper.studentmapper"> <select id = "query" resultType = "Student"> {appel showAllStu ()} </lect> <delete id = "Delbyid" ParameterType = "int"> {appel delbyid (# {id})} </ delete> </capper> ## 7. Classe de test: // Test / Java / Com / Demo01 Package 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; Importer java.io.ioException; import java.io.inputStream; Importer java.util.list; classe publique Demo01 {SQLSessionFactory protégé SF; SQLSESSION SSSETTÉ PROTÉRÉ; @Test public void test () {StudentMapper sdd = this.ss.getMapper (StudentMapper.class); Liste <Student> ATD = SDD.Query (); pour (Student SD: ATD) {System.out.println (SD); } sdd.delbyid (18); } @Before public void init () {inputStream est = null; try {is = Resources.getResourCeAsStream ("MyBatis-Config.xml"); this.sf = new SqlSessionFactoryBuilder (). Build (IS); this.ss = this.sf.opencession (); } catch (ioException e) {e.printStackTrace (); }} @After public void close () {this.ss.Commit (); this.ss.close (); }}Remplir:
Voyons la syntaxe des procédures stockées
1 Créez une procédure stockée
Créer la procédure sp_name () commencer ......... fin
2 Appeler les procédures stockées
call sp_name()
Remarque: Le nom de la procédure stocké doit être suivi de supports, même si la procédure stockée n'a pas de paramètres passés.
3 Supprimer les procédures stockées
drop procedure sp_name//
Remarque: vous ne pouvez pas supprimer une autre procédure stockée dans une procédure stockée, vous ne pouvez appeler qu'une autre procédure stockée.
4 autres commandes communes
show procedure status
Affiche les informations de base de toutes les procédures stockées stockées dans la base de données, y compris la base de données à laquelle il appartient, le nom de la procédure stockée, le temps de création, etc.
show create procedure sp_name
Affiche des informations détaillées d'une procédure stockée MySQL
Résumer
Ce qui précède est la méthode d'utilisation des procédures stockées MySQL dans MyBatis qui vous a été présentée. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!