Наши обычно используемые операционные операторы SQL -операторы должны быть скомпилированы, а затем выполнены при выполнении. Хранимая процедура - это набор операторов SQL для выполнения конкретных функций. После компиляции он хранится в базе данных. Пользователь вызывает и выполняет его, указав имя хранимой процедуры и предоставив параметры (если хранящаяся процедура имеет параметры).
Хранитованная процедура - это программируемая функция, которая создается и сохраняется в базе данных. Он может быть состоять из операторов SQL и некоторых специальных контрольных структур. Хранилированные процедуры очень полезны, если вы хотите выполнить одну и ту же функцию на разных приложениях или платформах или инкапсуляют конкретные функции. Хранилированные процедуры в базах данных можно рассматривать как моделирование объектно-ориентированных методов в программировании. Это позволяет контролировать, как доступ к данным.
1. Хранилированные процедуры улучшают функциональность и гибкость языка SQL. Хранилированные процедуры могут быть записаны в операторах управления потоком, которые имеют сильную гибкость и могут завершить сложные суждения и более сложные операции.
2. Хранилированные процедуры позволяют запрограммировать стандартные компоненты. После создания хранимой процедуры ее можно вызывать несколько раз в программе без необходимости переписать заявление SQL хранимой процедуры. Кроме того, специалисты базы данных могут в любое время изменять хранимые процедуры без какого -либо влияния на исходный код приложения.
3. Хранилированные процедуры могут достичь быстрой скорости выполнения. Если операция содержит большое количество кода транзакций-SQL или выполняется несколько раз соответственно, то хранимые процедуры намного быстрее, чем партийная обработка. Потому что сохраненные процедуры предварительно считываются. Когда хранящаяся процедура сначала запускается, оптимизатор анализирует и оптимизирует ее и дает план выполнения, который в конечном итоге хранится в системной таблице. Операторы транзакции с обработкой партии должны быть скомпилированы и оптимизированы каждый раз, когда они работают, что является относительно медленным.
4. Хранитованные процедуры могут уменьшить сетевой трафик в течение безрецептурного. Для операций (таких как запрос, модификация) одного и того же объекта базы данных, если оператор Transaction-SQL, участвующий в этой операции, хранится в процессе организации, то, когда хранящаяся процедура вызывает на клиентский компьютер, только оператор вызова передается в сети, тем самым значительно увеличивая сетевой трафик и уменьшает нагрузку сети.
5. Хранилированные процедуры могут быть полностью использованы в качестве механизма безопасности. Системные администраторы могут ограничивать права доступа к соответствующим данным, выполняя разрешения на определенную хранимую процедуру, избегая доступа к данным несанкционированными пользователями и обеспечивая безопасность данных.
1. Нелегко поддерживать, после изменения логики трудно ее изменить.
2. Если человек, который написал эту сохраненную процедуру, уходит, это, вероятно, катастрофа для человека, который взял на себя ее код, потому что другие все еще должны понимать вашу логику программы и логику хранения. Не способствует расширению.
3. Самый большой недостаток! Хотя сохраненные процедуры могут уменьшить количество кода и повысить эффективность разработки. Но одна вещь очень фатальная, это слишком потребляет производительность.
Ниже приведен код для представления хранимой процедуры MySQL в Mybatis;
## 1. Существует студент -студент (идентификатор, имя, возраст, деньги) ## 2. Создайте хранимую процедуру для запроса информации о таблице студентов: Разделитель | Создать процедуру showallstu () begin select * из порядка студента по Id desc Limit 6; EndDelimiter ## 2. Создайте хранимую процедуру для удаления записей (через идентификатор студента): `` `delimiter | Создать процедуру Delbyid (d int (11)) начать удалить из студента, где id = d; EndDelimiter ## 3. Создайте проект в Maven: (пропущено) //popos.xml Конфигурация: <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"> <dolideversion> 4.0.0 </modelversion> <groupid> com.metar </GroupId> <ArtifActid> myBatis-mys-mys-mysq-mys-mys quid> <Cackaging> WAR </упаковка> <sersive> 1.0 </version> <mame> mybatis-mysql maven webapp </name> <url> http://maven.apache.org </url> <dependencies> <dehyedery> <groupid> junit </GroupId> <strifactid> junit </artifactid> <sersope> 4.12 </ressope> </версия </версия </версия </версия> </версия> </версия </ressope> </ressope> </ressope> </rersope> 4.12 </rescope> 4. </depervice> <dependency> <groupid> org.projectlombok </groupid> <artifactid> lombok </artifactid> <sersive> 1.16.20 </version> <cracpe> </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> <cracpope> test </scope> </dependency> </dependencies> <buld> <finalname> $ {project.artifactid} </finalname> <testsourcedirectory> src/test/java </testsourcedirectory> <sookcedirectory> src/main/java </sourcedirectore> <!-Ресурс-ресурсы. <sersource> <cilectory> src/main/java </directory> <clact> <clact> **/*. xml </include> <clact> **/*. Свойства </include> </inclate> </resource> <serrousce> <Directory> src/main/resources </vertirectore> <clact> <clact> **/*. xml </incluct>. </resource> </build> </project> ## 4. Конфигурация ввода базы данных ссылок (пропущена), конфигурация: mybatis-config.xml: <? Xml version = "1.0" Encoding = "UTF-8"?> <! Конфигурация Doctype public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <Конфигурация> <!-Это портал конфигурации для базы данных ресурсов-> <Properties rource = "db.properties"/> <!-Включение настройки журнала-> <treats> <fut name = "logprefix"/> «! <Typealias> <!-Настройте псевдоним класса модели-> <!-<typealias type = "com.fz.entity.student" Alias = "ST"/>-> <!-Настройте все псевдонимы в указанном пакете // Модельного класса для малого алиаса в Com.fz.Entity Книга. </typealiases> <среда default = "development"> <среда id = "development"> <transactionManager type = "jdbc"/> <dataSource type = "booled"> <name = "griver" value = "$ {db.driver}"/> <property name = "url" value = "$ {db.url}"/> <и имя свойства = "us name" us emorme = "us name =" value = "$ {db.user}"/> <name = "password" value = "$ {db.password}"/> </dataSource> </ervenery> </ervines> <mappers> <!-<mapper/>-> <package name = "com.fz.mapper"/> </mappers> </configuration> #1. Создать объект объекта класса Entity: // Пакет: com/fz/entity/stulty @data public class clode {private int id; Приватное название строки; частный int возраст; частные двойные деньги; } ## 6. Создать класс интерфейса StudentMapper и конфигурация StudentMapper.xml; // studentMapper Interface StudentMapper {// хранящаяся процедура запрос 6 записей; Общественный список <tlpant> Query (); // хранящаяся процедура удаляет запись (от ID) Public Int Delbyid (INT ID); } //Studentmapper.xml configuration `` `<? Xml version =" 1.0 "Encoding =" utf-8 "?> <! Doctype Mapper public"-// mybatis.org//dtd mapper 3.0 // en "" http://mybatis.org/dtd/mybatis-3-m " namespace = "com.fz.mapper.studentmapper"> <select id = "Query" reculatype = "studive"> {call showallstu ()} </select> <delete id = "delbyid" parametertype = "int"> {call delbyid (#{id})} </delete> </mapper>##. 7. Тестовый класс: // тест/java/com/demo01 package com; Импорт com.fz.entity.student; Импорт com.fz.mapper.studentmapper; Импорт org.apache.ibatis.io.resources; импорт org.apache.ibatis.session.sqlsession; Импорт org.apache.ibatis.session.sqlsessionFactory; Импорт org.apache.ibatis.session.sqlsessionFactoryBuilder; Импорт org.junit.fter; Импорт org.junit.fore; Импорт org.junit.test; импортировать java.io.ioexception; импортировать java.io.inputstream; импортировать java.util.list; открытый класс Demo01 {защищенный SQLSessionFactory SF; Защищенный SQLSession SS; @Test public void test () {StudentMapper sdd = this.ss.getmapper (studentmapper.class); Список <Tlade> atd = sdd.query (); для (студент SD: atd) {System.out.println (SD); } sdd.delbyid (18); } @Before public void init () {inputstream is = null; try {is = resources.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 (); }}Пополнить:
Давайте посмотрим на синтаксис сохраненных процедур
1 Создайте хранимую процедуру
Создать процедуру sp_name () начинается ......... End
2 Вызов сохраненных процедур
call sp_name()
ПРИМЕЧАНИЕ. На именем сохраненной процедуры следует следовать скобки, даже если хранящаяся процедура не сдается параметров.
3 Удалить сохраненные процедуры
drop procedure sp_name//
ПРИМЕЧАНИЕ. Вы не можете удалить еще одну сохраненную процедуру. В одной хранимой процедуре вы можете вызвать только другую хранимую процедуру.
4 Другие общие команды
show procedure status
Отображает основную информацию всех хранимых процедур, хранящихся в базе данных, включая базу данных, к которой она принадлежит, имя хранимой процедуры, время создания и т. Д.
show create procedure sp_name
Отображает подробную информацию о хранимой процедуре MySQL
Суммировать
Выше приведено метод использования хранимых процедур MySQL в Mybatis, представленных вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!