일반적으로 사용되는 운영 데이터베이스 언어 SQL 문은 먼저 컴파일 된 다음 실행할 때 실행해야합니다. 저장 프로 시저는 특정 함수를 완료하기위한 SQL 문의 세트입니다. 컴파일 후 데이터베이스에 저장됩니다. 저장 프로 시저의 이름을 지정하고 매개 변수를 제공하여 사용자가 호출하고 실행합니다 (저장 프로 시저에 매개 변수가있는 경우).
저장 프로 시저는 데이터베이스에 생성되고 저장된 프로그래밍 가능한 기능입니다. SQL 문 및 일부 특수 제어 구조로 구성 될 수 있습니다. 저장된 절차는 다른 응용 프로그램이나 플랫폼에서 동일한 기능을 실행하거나 특정 기능을 캡슐화 할 때 매우 유용합니다. 데이터베이스에 저장된 절차는 프로그래밍에서 객체 지향 메소드의 시뮬레이션으로 간주 될 수 있습니다. 데이터 액세스 방법을 제어 할 수 있습니다.
1. 저장 절차는 SQL 언어의 기능과 유연성을 향상시킵니다. 저장된 절차는 유연성이 강하고 복잡한 판단과보다 복잡한 작업을 완료 할 수있는 흐름 제어 문으로 작성 될 수 있습니다.
2. 저장된 절차를 통해 표준 구성 요소를 프로그래밍 할 수 있습니다. 저장된 절차가 작성된 후, 저장 프로 시저의 SQL 문을 다시 작성하지 않고도 프로그램에서 여러 번 호출 할 수 있습니다. 또한 데이터베이스 전문가는 애플리케이션 소스 코드에 영향을 미치지 않고 언제든지 저장된 절차를 수정할 수 있습니다.
3. 저장된 절차는 더 빠른 실행 속도를 달성 할 수 있습니다. 작업에 많은 양의 트랜잭션 -SQL 코드가 포함되거나 각각 여러 번 실행되는 경우 저장된 절차는 배치 처리보다 훨씬 빠릅니다. 저장된 절차가 사전 컴파일 되었기 때문입니다. 저장된 절차가 첫 번째 실행되면 Optimizer는이를 분석하고 최적화하고 궁극적으로 시스템 테이블에 저장되는 실행 계획을 제공합니다. 배치 처리 트랜잭션 -SQL 문은 실행할 때마다 컴파일되고 최적화되어야하며, 이는 상대적으로 느립니다.
4. 저장된 절차는 처방전없이 구입할 수있는 네트워크 트래픽을 줄일 수 있습니다. 동일한 데이터베이스 개체의 조작 (예 : 쿼리, 수정)의 경우,이 작업과 관련된 트랜잭션 -SQL 문이 조직 프로세스에 의해 저장되면, 저장된 프로 시저가 클라이언트 컴퓨터에서 호출되면 네트워크에서 호출 문 만 전송되고 네트워크 트래픽을 크게 증가시킵니다.
5. 저장 절차는 보안 메커니즘으로 완전히 활용 될 수 있습니다. 시스템 관리자는 특정 저장된 프로 시저에 대한 권한을 실행하여 해당 데이터에 대한 액세스 권한을 제한하고 승인되지 않은 사용자의 데이터에 대한 액세스를 피하고 데이터 보안을 보장 할 수 있습니다.
1. 유지하기가 쉽지 않으면 논리가 변경되면 수정하는 것이 번거 롭습니다.
2.이 저장된 절차를 쓴 사람이 떠나는 경우, 다른 사람들은 여전히 프로그램 논리와 스토리지 논리를 이해해야하기 때문에 코드를 인수 한 사람에게는 재앙 일 것입니다. 확장에 도움이되지 않습니다.
3. 가장 큰 단점! 저장된 절차는 코드의 양을 줄이고 개발 효율성을 향상시킬 수 있습니다. 그러나 한 가지는 매우 치명적이며 너무 성능 저렴합니다.
다음은 Mybatis에 MySQL 저장 절차를 소개하는 코드입니다.
## 1. 학생 테이블 학생 (ID, 이름, 나이, 돈) ## 2가 있습니다. 학생 테이블 정보 쿼리를위한 저장된 절차 생성 : Delimiter | 절차 작성 showallstu () 시작 * 선택 *에서 학생 주문에서 Id Desc Limit 6; EndDelimiter ## 2. 레코드를 삭제하기위한 저장된 절차를 작성 (학생 ID를 통해) :````Delimiter | 프로 시저 생성 delbyid (d int (11))는 id = d가있는 학생에서 삭제를 시작합니다. EndDelimiter ## 3. Maven에서 프로젝트 생성 : (생략) //pox.xml 구성 : <project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w.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> <groupid> com.metar </groupid> <artifactid> mybatis-mycl </artifactid> <Packaging> War </packaging> <버전> 1.0 </version> <name> mybatis-mysql maven webapp </name> <url> http://maven.apache.org </url> <pectionency> <groupid> junit> </groupid> </artifactid> 4.12 </version> 4.12 </dependency> <pectionency> <groupid> org.projectlombok </groupid> <artifactid> lombok </artifactid> <버전> 1.16.20 </version> <copop> 제공 </scope> </fectionency> <pelection> <groupid> org.mybatis </groupId> <artifactid> mybatis> 4. 4. </의존성> <pectionency> <groupId> mySQL </groupId> <atifactid> mySQL-connector-java </artifactid> <version> 6.0.6 </version> </expendency> <groupId> ch.qos.logback </groupid> <artifactid> logback classid> <버전> 1.3.3.3.3.3.3.3.3. <cope> test </scope> </fectionement> </fectionemencies> <build> <finalname> $ {project.artifactid} </finalname> <testsourcedirectory> src/test/java </testsourcedirectory> <outcedirectory> src/main/java <! <! <Resource> <Resource> <cleration> src/main/java </directory> <clener> <clener> <clenure> **/*. XML </include> <clander> <clander> **/*. 속성 </include> </include> </resource> <Resource> <cleration> src/main/resources </directory> <clener> <clener>/*. <clude> **/*. 속성 </include> </resource> </build> </project> ## 4. 링크 데이터베이스 항목 구성 (생략), 구성 : 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> <!-이것은 리소스 데이터베이스의 구성 포털입니다-> <properties resource = "db.properties"/> <!-<설정> <setings name = "value ="> dao. <tintealias> <!-모델 클래스 별칭-> <!-<findealias type = "com.fz.entity.student"alias = "st"/>-> <!-지정된 패키지에서 모든 별명을 구성 // 모델 클래스 소형-차주터 alias. </typealiases> <환경 기본값 = "개발"> <환경 ID = "Development"> <transactionManager type = "jdbc"/> <dataSource type = "poold"> <property name = "driver"value = "$ {db.driver}"/> <속성 이름 = "url"value = "$ {db.url}"/> value = "$ {db.user}"/> <속성 이름 = "password"vale = "$ {db.password}"/> </dataSource> </환경> </환경> <mappers> <!-<Mapper/>-> <package name = "com.fz.mapper"/> </mappersuration>#### 5. 엔티티 클래스 개체 생성 : // 패키지 : com/fz/Entity/Student @Data Public Class Student {private int id; 개인 문자열 이름; 사적인 int 연령; 개인 이중 돈; } ## 6. StudentMapper 인터페이스 클래스 및 StudentMapper.xml 구성을 만듭니다. // StudentMapper 인터페이스 StudentMapper {// 저장 프로 시저 쿼리 6 레코드; 공개 목록 <tudent> query (); // 저장 프로 시저는 레코드를 삭제합니다 (id) public int delbyid (int id); } //studentMapper.xml configuration``````````산서인 version = "1.0"alcoding = "utf-8"?> <! doctype mapper public "-// mybatis.org//dtd mapper 3.0 // namespace = "com.fz.mapper.studentMapper"> <선택 ID = "Query"resultType = "Student"> {call showAllStu ()}}} </select> <delete id = "delbyid"parametertype = "int"> {Call DevilId (#{id})} </delete>##### 7. 테스트 클래스 : // test/java/com/demo01 패키지 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; 가져 오기 org.junit.fore; import org.junit.test; import java.io.ioexception; import java.io.inputstream; Java.util.list 가져 오기; 공개 클래스 Demo01 {보호 된 sqlsessionfactory sf; 보호 된 SQLSESSION SS; @test public void test () {Studentmapper sdd = this.s.getMapper (StudentMapper.class); 목록 <tudent> atd = sdd.query (); for (학생 sd : atd) {system.out.println (sd); } sdd.delbyid (18); } @public void init () {inputStream is = null; try {is = resources.getResourceasStream ( "myBatis-config.xml"); this.sf = 새로운 sqlsessionfactorybuilder (). build (is); this.ss = this.sf.opensession (); } catch (ioexception e) {e.printstacktrace (); }} @after public void close () {this.ss.commit (); this.ss.close (); }}다시 채우다:
저장된 절차의 구문을 보자
1 저장된 절차를 만듭니다
프로 시저 생성 sp_name () 시작 ......... 끝
2 전화 저장 절차
call sp_name()
참고 : 저장된 절차 이름은 저장된 절차에 매개 변수가 전달되지 않더라도 괄호를 따라야합니다.
3 저장 절차를 삭제합니다
drop procedure sp_name//
참고 : 저장된 프로 시저에서 다른 저장된 절차를 삭제할 수 없으며 다른 저장된 절차 만 호출 할 수 있습니다.
4 다른 일반적인 명령
show procedure status
데이터베이스에 저장된 데이터베이스의 기본 정보 (저장 프로 시저의 이름, 생성 시간 등)를 포함하여 데이터베이스에 저장된 모든 프로 시저의 기본 정보를 표시합니다.
show create procedure sp_name
MySQL 저장 절차의 자세한 정보를 표시합니다
요약
위는 MyBatis에서 MySQL 저장 절차를 사용하는 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!