Nuestras declaraciones SQL de lenguaje de base de datos operativo comúnmente utilizado deben compilarse primero y luego ejecutarse al ejecutar. El procedimiento almacenado es un conjunto de declaraciones SQL para completar funciones específicas. Después de la compilación, se almacena en la base de datos. El usuario lo llama y lo ejecuta especificando el nombre del procedimiento almacenado y dando parámetros (si el procedimiento almacenado tiene parámetros).
Un procedimiento almacenado es una función programable que se crea y se guarda en una base de datos. Puede estar compuesto por declaraciones SQL y algunas estructuras de control especiales. Los procedimientos almacenados son muy útiles cuando desea ejecutar la misma función en diferentes aplicaciones o plataformas, o encapsular funciones específicas. Los procedimientos almacenados en bases de datos pueden considerarse simulaciones de métodos orientados a objetos en la programación. Permite el control sobre cómo se accede a los datos.
1. Los procedimientos almacenados mejoran la funcionalidad y flexibilidad del lenguaje SQL. Los procedimientos almacenados se pueden escribir en declaraciones de control de flujo, que tienen una fuerte flexibilidad y pueden completar juicios complejos y operaciones más complejas.
2. Los procedimientos almacenados permiten programar componentes estándar. Después de crear un procedimiento almacenado, se puede llamar varias veces en el programa sin tener que reescribir la declaración SQL del procedimiento almacenado. Además, los profesionales de la base de datos pueden modificar los procedimientos almacenados en cualquier momento sin ningún impacto en el código fuente de la aplicación.
3. Los procedimientos almacenados pueden lograr una velocidad de ejecución más rápida. Si una operación contiene una gran cantidad de código de transacción-SQL o se ejecuta varias veces respectivamente, los procedimientos almacenados son mucho más rápidos que el procesamiento por lotes. Porque los procedimientos almacenados son precompilados. Cuando se ejecuta por primera vez un procedimiento almacenado, el optimizador lo analiza y lo optimiza y proporciona el plan de ejecución que finalmente se almacena en la tabla del sistema. Las declaraciones de transacción de procesamiento por lotes se deben compilar y optimizar cada vez que se ejecutan, lo cual es relativamente lento.
4. Los procedimientos almacenados pueden reducir el tráfico de red por encima de la venta. Para las operaciones (como la consulta, la modificación) del mismo objeto de base de datos, si la declaración de transacción-SQL involucrada en esta operación se almacena mediante el proceso de la organización, luego, cuando se llama el procedimiento almacenado en la computadora del cliente, solo la declaración de llamada se transmite en la red, aumentando en gran medida el tráfico de la red y reduciendo la carga de la red.
5. Los procedimientos almacenados se pueden utilizar completamente como un mecanismo de seguridad. Los administradores del sistema pueden restringir los derechos de acceso a los datos correspondientes ejecutando permisos a un determinado procedimiento almacenado, evitando el acceso a los datos por parte de usuarios no autorizados y garantizando la seguridad de los datos.
1. No es fácil de mantener, una vez que cambia la lógica, es problemático modificarla
2. Si la persona que escribió este procedimiento almacenado se va, probablemente sea un desastre para la persona que se hizo cargo de su código, porque otros aún tienen que comprender la lógica de su programa y su lógica de almacenamiento. No propicio para la expansión.
3. ¡La mayor desventaja! Aunque los procedimientos almacenados pueden reducir la cantidad de código y mejorar la eficiencia del desarrollo. Pero una cosa es muy fatal, es demasiado consumidor de rendimiento.
El siguiente es un código para introducir el procedimiento almacenado MySQL en MyBatis;
## 1. Hay estudiante estudiante de mesa (identificación, nombre, edad, dinero) ## 2. Cree un procedimiento almacenado para consultar la información de la tabla del estudiante: Delimiter | Crear procedimiento showAlStu () Comenzar seleccionar * del pedido del estudiante por ID DESC Límite 6; EndLimiter ## 2. Cree un procedimiento almacenado para eliminar registros (a través de la identificación del estudiante): `` `Delimiter | Crear procedimiento delByID (d int (11)) Comience eliminar del estudiante donde id = d; EndLimiter ## 3. Cree un proyecto en Maven: (omitido) //pox.xml Configuración: <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"> <modeleVersion> 4.0.0 </modelversion> <grupo> com.molar </groupid> <artifactid> mybatis-mysml </artil. <Apbackaging> War </Packaging> <versever> 1.0 </versewer> <name> mybatis-mysql maven webapp </name> <url> http://maven.apache.org </url> <pendencies> <pendency> <proupid> junit </grupo) </pendency> <pendency> <uproupid> org.projectlombok </proupid> <artifactid> lombok </artifactid> <verserse> 1.16.20 </versión> <cope> proporcionó </cope> </pendency> <pendency> <uproupid> org.mybatis </proupid> <artifactid> mybatis </versión> <versión> <versión> <versión> <versión> <versión> 3.4. </pendency> <pendency> <grupid> mysql </groupid> <artifactid> mysql-connector-java </arfactid> <verserse> 6.0.6 </versión> </pendency> <ependency> <proupid> ch.qos.logback </groupid> <artifactid> logback-classic </artifactid> <versersid> 1.2.3. <cope> test </scope> </pepertency> </pendencs> <eding> <fallname> $ {Project.ArtifactID} </finalName> <testSourCedIrectory> src/test/java </testSourCedIrectory> <SourCedirectory> src/main/java </ourCedirectory> <!-Handling File FilEntation File no puede ser de recursos. <conseyce> <Directory> src/main/java </sirectory> <incluye> <clice> **/*. xml </clice> <incluido> **/*. Propiedades </cló> </cluye> </ recursos> <contrato> <Directory> Src/Main/Resources </Directory> <Incluye> <én> **/*. XML </COCENDE> <CODED> **/*. </recursos> </struct> </proyecto> ## 4. Configuración de entrada de base de datos de enlace (omitido), Configuración: mybatis-config.xml: <? Xml versión = "1.0" encoding = "utf-8"?> < "http://mybatis.org/dtd/mybatis-3-config.dtd"> <Configuration> <!-Este es el portal de configuración para la base de datos de recursos-> <Propertys recursos = "db.properties"/> <!-activar los ajustes de registro-> <ajustes> <name de configuración = "logprefix" valor = "daoo daoo. <Pyypealias> <!-Configurar alias de clase de modelo-> <!-<typealias type = "com.fz.entity.student" alias = "st"/>-> <!-Configure todos los alias en el paquete especificado // el modelo de clase de clase modelo alias bajo el paquete com.fz.entity book.Java Book es el alias-> <paquete name = "com.fz.fz.fz.Entity"/" </typealiases> <entornos default = "desarrollo"> <entorno id = "desarrollo"> <transaccionManager type = "jdbc"/> <dataSource type = "agrupado"> <propiedad name = "controlador" valor = "$ {db.driver}"/> <name de propiedad = "url" valor = "$ {db.url}/> <name de propiedad =" nombre de usuario = "nombre de usuario" value = "$ {db.user}"/> <propiedad name = "contraseña" value = "$ {db.password}"/> </shasource> </balindment> </entornos> <mappers> <!-<mapper/>-> <paquete = "com.fz.mapper"/> </mappers> </figuration> ## 5. Crear objeto de clase de entidad: // paquete: com/fz/entity/student @data public class Student {private int id; nombre de cadena privada; edad privada int; Doble dinero privado; } ## 6. Crear clase de interfaz StudentMapper y configuración StudentMapper.xml; // Interfaz de StudentMapper StudentMapper {// Consulta de procedimiento almacenado 6 registros; Lista pública <estudiante> QUERY (); // El procedimiento almacenado elimina un registro (por id) público int delbyid (int id); } //StudentMapper.xml Configuration````` <? Xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 //" http://mybatis.org/dtd/mybatis-3-mapper.dtttt "> <maMaP namespace = "com.fz.mapper.studentmapper"> <select id = "QUERY" resultType = "Student"> {Call showAllStu ()} </select> <delete id = "delbyid" parametertype = "int"> {llamar delbyid (#{id})} </elelete> </mepper> ## 7. Clase de prueba: // test/java/com/demo01 paquete com; import com.fz.entity.student; import com.fz.mapper.studentmapper; importar org.apache.ibatis.io.resources; importar org.apache.ibatis.session.sqlsession; importar org.apache.ibatis.session.sqlsessionFactory; importar org.apache.ibatis.session.sqlsessionFactoryBuilder; importar org.junit.ifter; importar org.junit.before; importar org.junit.test; import java.io.ioException; import java.io.inputstream; import java.util.list; clase pública demo01 {protegido SQLSessionFactory SF; SQLSession protegido SS; @Test public void test () {StudentMapper SDD = this.ss.getMapper (StudentMapper.Class); Lista <deudante> ATD = SDD.Query (); para (Student SD: ATD) {System.out.println (SD); } sdd.delbyid (18); } @Bebore public void init () {inputStream is = null; intente {is = recursos.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 (); }}Reponer:
Veamos la sintaxis de los procedimientos almacenados
1 Crear un procedimiento almacenado
crear procedimiento sp_name () begin ......... fin
2 Llamar a los procedimientos almacenados
call sp_name()
NOTA: El nombre del procedimiento almacenado debe ser seguido por paréntesis, incluso si el procedimiento almacenado no tiene parámetros que sean aprobados.
3 Eliminar procedimientos almacenados
drop procedure sp_name//
Nota: No puede eliminar otro procedimiento almacenado en un procedimiento almacenado, solo puede llamar a otro procedimiento almacenado.
4 otros comandos comunes
show procedure status
Muestra información básica de todos los procedimientos almacenados almacenados en la base de datos, incluida la base de datos a la que pertenece, el nombre del procedimiento almacenado, tiempo de creación, etc.
show create procedure sp_name
Muestra información detallada de un procedimiento almacenado MySQL
Resumir
Lo anterior es el método de usar procedimientos almacenados MySQL en MyBatis presentados a usted. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!