Nossas instruções SQL de linguagem de banco de dados operacionais comumente usadas precisam ser compiladas primeiro e depois executadas ao executar. O procedimento armazenado é um conjunto de instruções SQL para concluir funções específicas. Após a compilação, é armazenado no banco de dados. O usuário chama e o executa especificando o nome do procedimento armazenado e fornecendo parâmetros (se o procedimento armazenado tiver parâmetros).
Um procedimento armazenado é uma função programável criada e salva em um banco de dados. Pode ser composto por declarações SQL e algumas estruturas de controle especiais. Os procedimentos armazenados são muito úteis quando você deseja executar a mesma função em diferentes aplicativos ou plataformas ou encapsula funções específicas. Os procedimentos armazenados em bancos de dados podem ser considerados simulações de métodos orientados a objetos na programação. Ele permite o controle sobre como os dados são acessados.
1. Os procedimentos armazenados aprimoram a funcionalidade e a flexibilidade do idioma SQL. Os procedimentos armazenados podem ser escritos em declarações de controle de fluxo, que têm forte flexibilidade e podem concluir julgamentos complexos e operações mais complexas.
2. Os procedimentos armazenados permitem que os componentes padrão sejam programados. Depois que um procedimento armazenado é criado, ele pode ser chamado várias vezes no programa sem precisar reescrever a instrução SQL do procedimento armazenado. Além disso, os profissionais de banco de dados podem modificar os procedimentos armazenados a qualquer momento, sem nenhum impacto no código -fonte do aplicativo.
3. Os procedimentos armazenados podem obter uma velocidade de execução mais rápida. Se uma operação contiver uma grande quantidade de código de transação-SQL ou for executada várias vezes, respectivamente, os procedimentos armazenados serão muito mais rápidos que o processamento em lote. Porque os procedimentos armazenados estão pré -compilados. Quando um procedimento armazenado é executado pela primeira vez, o otimizador analisa e o otimiza e fornece o plano de execução que é armazenado na tabela do sistema. As instruções transações de processamento de lote devem ser compiladas e otimizadas toda vez que são executadas, o que é relativamente lento.
4. Os procedimentos armazenados podem reduzir o tráfego da rede por venda sem receita. Para operações (como consulta, modificação) do mesmo objeto de banco de dados, se a instrução Transaction-SQL envolvida nesta operação for armazenada pelo processo da organização, quando o procedimento armazenado for chamado no computador cliente, apenas a instrução CHAMA é transmitida na rede, aumentando muito o tráfego de rede e a redução da carga de rede.
5. Os procedimentos armazenados podem ser totalmente utilizados como um mecanismo de segurança. Os administradores do sistema podem restringir os direitos de acesso aos dados correspondentes executando permissões a um determinado procedimento armazenado, evitando o acesso aos dados por usuários não autorizados e garantindo a segurança dos dados.
1. Não é fácil de manter, uma vez que a lógica muda, é problemático modificá -lo
2. Se a pessoa que escreveu esse procedimento armazenado sai, provavelmente é um desastre para a pessoa que assumiu o código dela, porque outros ainda precisam entender a lógica do seu programa e sua lógica de armazenamento. Não propício à expansão.
3. A maior desvantagem! Embora os procedimentos armazenados possam reduzir a quantidade de código e melhorar a eficiência do desenvolvimento. Mas uma coisa é muito fatal, é muito consumidor de desempenho.
A seguir, é apresentado um código para introduzir o procedimento armazenado MySQL em Mybatis;
## 1. Há estudante de estudante (id, nome, idade, dinheiro) ## 2. Crie um procedimento armazenado para consultar informações da tabela do aluno: delimitador | Criar procedimento ShowallSTU () BEGIN SELECT * a partir do pedido do aluno por ID Desc Limit 6; Enddelimiter ## 2. Crie um procedimento armazenado para excluir registros (por meio de identificação do aluno): `` Delimiter | Criar procedimento delbyid (D int (11)) Comece a excluir do aluno onde id = d; Enddelimiter ## 3. Crie um projeto no maven: (omitido) //pox.xml Configuração: <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlance xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0_0.xsd"> <lodelversion> 4.0.0 </modelversion> <purbrougid> com.mettar </groupiid> </grupo </groupiDid> </mystrsion> <pursQUIDIDIDIDIDIDIDIDIDOIDIDIDOIDIDIDOIDIDOIDIDIDO </GRUPOIDIDIDIDIDIDIDO </GRUPORIDEIDIDIDIDIDO </MOMPLOESTIDIDIDEIDIDIDIDO " <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> </dependency> <pendency> <voundid> org.projectlombok </groupiD> <TROTIFACTID> LOMOTOK </ArtifactId> <Version> 1.16.20 </sipers> <cope> fornecido </scope> </dependency> <pendency> <puperiD> myrg.mybatis </grupo> <stif> </dependency> <pendency> <puperiD> mysql </foupiid> <TRAFACTID> mysql-conector-java </artifactId> <versão> 6.0.6 </versão </dependency> <pendency> <vSersiSsold> ch.qos.logback </grupo> </Artifactid> Log-Classic> versão </artback> </grupo> versão </artback> </artback> </grupo de versão </siSERSEM> </siSERSERSEM> versão </GroupId> Ch.qos.Logback </Groupid> </Artifactid> lascback> VersionFback </Groupid> <cope> test </cope> </dependency> </dependências> <build> <finname> $ {Project.artifactId} </finalName> <TestSourceDirectory> src/test/java </testSourcedirectory> <oucedirectory> src/main/java </Sourcedirectory> <oucectory> src/main/java </Soucedirectory> <oucectory> src/main/java </Sourcedirectory> <Cource> <Directory> src/main/java </diretório> <inclui> <cluir> **/*. xml </incluir> <cluir> **/*. Propriedades </incluir> </incluir> </source> <** ***. </Resource> </brupt> </ject> ## 4. Link para o banco de dados Configuração de entrada (omitida), Configuração: mybatis-config.xml: <? Xml versão = "1.0" coding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd config 3.0/pt" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <figuration> <!-Este é o portal de configuração para o banco de dados de recursos-> <fetfels> <fetfels> <fetfels> <fimping> <fimping> <fetfing> <fetfing> <fetfing> <fetfing> <fetfing> <fetfing> <fetfeld> <fetfeld> <fetfeltce> <fetfeld> <fetfeld> <fetfeld> <fetfeltce> <fetfeld> <fetfeld> <fetfeltce> <fetfeld> <fetfeld> <fetfeld> <fetfeltce [setting> <fetfeltce = "db.properties"/> <! </fastings> <TyTealias> <!-Configurar alias de classe de modelo-> <!-<typeAlias type = "com.fz.entity.student" alias = "st"/>-> <!-Configure todos os aliases do pacote especificado // a classe Model Small-Charac Alias sob o com.fz.entity name = "com.fz.entity"/> </typeAliases> <ambientes default = "desenvolvimento"> <ambiente id = "desenvolvimento"> <transação name = "nome de usuário" value = "$ {db.user}"/> <propriedade name = "senha" value = "$ {db.password}"/> </datasource> </ambiental Crie o objeto da classe de entidade: // pacote: com/fz/entidade/aluno @data public class Student {private int id; nome de string privado; private Int Age; dinheiro duplo privado; } ## 6. Crie a classe de interface do Studentmapper e a configuração do Studentmapper.xml; // interface do aluno, Studentmapper {// Procedimento armazenado Consulta 6 Records; Lista pública <very estudy> query (); // O procedimento armazenado exclui um registro (por id) public int delbyId (int id); } //Studentmapper.xml Configuration`````` <? Xml versão = "1.0" coding = "utf-8"?> <! namespace = "com.fz.mapper.studentmapper"> <select id = "query" resulttype = "student"> {ligue para ShowAllStu ()} </select> <delete id = "delbyid" parameterType = "int"> {Delby (#{id})} </delate> Classe de teste: // test/java/com/Demo01 Package com; importar com.fz.entity.student; importar 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.after; importar org.junit.be antes; importar org.junit.test; importar java.io.ioException; importar java.io.inputStream; importar java.util.list; classe pública Demo01 {protegido SQLSessionFactory SF; SQLSession SS protegido; @Test public void test () {studentmapper sdd = this.sss.getmapper (studentmapper.class); Lista <Dentul> ATD = SDD.Query (); para (Student SD: ATD) {System.out.println (SD); } sdd.delbyId (18); } @EBe Public void init () {inputStream is = null; tente {is = Resources.getResourceasStream ("mybatis-config.xml"); this.sf = new SQLSessionFactoryBuilder (). Build (IS); this.ss = this.sf.opensssion (); } catch (ioexception e) {e.printStackTrace (); }} @After public void Close () {this.ss.commit (); this.ss.close (); }}Reabastecer:
Vamos ver a sintaxe dos procedimentos armazenados
1 Crie um procedimento armazenado
Criar procedimento sp_name () começar ......... fim
2 chamando procedimentos armazenados
call sp_name()
Nota: O nome do procedimento armazenado deve ser seguido por colchetes, mesmo que o procedimento armazenado não tenha parâmetros.
3 Excluir procedimentos armazenados
drop procedure sp_name//
Nota: Você não pode excluir outro procedimento armazenado em um procedimento armazenado, você pode chamar apenas outro procedimento armazenado.
4 outros comandos comuns
show procedure status
Exibe informações básicas de todos os procedimentos armazenados armazenados no banco de dados, incluindo o banco de dados ao qual pertence, o nome do procedimento armazenado, tempo de criação etc.
show create procedure sp_name
Exibe informações detalhadas de um procedimento armazenado MySQL
Resumir
O exposto acima é o método de usar procedimentos armazenados MySQL em Mybatis apresentados a você. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!