يجب تجميع عبارات SQL الخاصة بقاعدة بيانات التشغيل الشائعة الاستخدام أولاً ثم تنفيذها عند التنفيذ. الإجراء المخزن هو مجموعة من عبارات SQL لإكمال وظائف محددة. بعد التجميع ، يتم تخزينه في قاعدة البيانات. يقوم المستخدم باستدعاءه وينفذه من خلال تحديد اسم الإجراء المخزن وإعطاء المعلمات (إذا كان الإجراء المخزن له معلمات).
الإجراء المخزن هو وظيفة قابلة للبرمجة يتم إنشاؤها وحفظها في قاعدة بيانات. يمكن أن تتكون من عبارات SQL وبعض هياكل التحكم الخاصة. تكون الإجراءات المخزنة مفيدة للغاية عندما تريد تنفيذ نفس الوظيفة على التطبيقات أو الأنظمة الأساسية المختلفة ، أو تغلف وظائف محددة. يمكن اعتبار الإجراءات المخزنة في قواعد البيانات محاكاة للطرق الموجهة للكائنات في البرمجة. يسمح بالتحكم في كيفية الوصول إلى البيانات.
1. الإجراءات المخزنة تعزز وظائف ومرونة لغة SQL. يمكن كتابة الإجراءات المخزنة في بيانات التحكم في التدفق ، والتي لها مرونة قوية ويمكنها إكمال الأحكام المعقدة والعمليات الأكثر تعقيدًا.
2. الإجراءات المخزنة تسمح ببرمجة المكونات القياسية. بعد إنشاء إجراء مخزن ، يمكن استدعاؤه عدة مرات في البرنامج دون الحاجة إلى إعادة كتابة بيان SQL للإجراء المخزن. علاوة على ذلك ، يمكن لمحترفي قاعدة البيانات تعديل الإجراءات المخزنة في أي وقت دون أي تأثير على رمز مصدر التطبيق.
3. يمكن أن تحقق الإجراءات المخزنة سرعة تنفيذ أسرع. إذا كانت العملية تحتوي على كمية كبيرة من رمز المعاملة SQL أو تم تنفيذها عدة مرات على التوالي ، فإن الإجراءات المخزنة تكون أسرع بكثير من معالجة الدُفعات. لأن الإجراءات المخزنة مسبقة. عند تشغيل إجراء مخزن أولاً ، يقوم المحسن بتحليله ويحسنه ويعطي خطة التنفيذ التي يتم تخزينها في نهاية المطاف في جدول النظام. يجب تجميع عبارات معالجة المعالجة الدُفعات SQL وتحسينها في كل مرة تعمل فيها ، وهو بطيء نسبيًا.
4. يمكن للإجراءات المخزنة أن تقلل من حركة الشبكة عن طريق دون وصفة طبية. بالنسبة للعمليات (مثل الاستعلام ، التعديل) لكائن قاعدة البيانات نفسه ، إذا تم تخزين عبارة المعاملة SQL المشاركة في هذه العملية من قبل عملية المؤسسة ، ثم عندما يتم استدعاء الإجراء المخزن على كمبيوتر العميل ، يتم إرسال بيان الاتصال فقط في الشبكة ، وبالتالي زيادة حركة الشبكة وتقليل تحميل الشبكة.
5. يمكن استخدام الإجراءات المخزنة بالكامل كآلية أمان. يمكن لمسؤولي النظام تقييد حقوق الوصول إلى البيانات المقابلة من خلال تنفيذ الأذونات إلى إجراء معين ، وتجنب الوصول إلى البيانات من قبل المستخدمين غير المصرح لهم وضمان أمان البيانات.
1. ليس من السهل الحفاظ عليه ، بمجرد أن يتغير المنطق ، من المزعج تعديله
2. إذا كان الشخص الذي كتب هذا الإجراء المخزن ، فمن المحتمل أن يكون ذلك كارثة بالنسبة للشخص الذي استولى على رمزها ، لأنه لا يزال يتعين على الآخرين فهم منطق البرنامج ومنطق التخزين الخاص بك. لا يفضي إلى التوسع.
3. أكبر عيب! على الرغم من أن الإجراءات المخزنة يمكن أن تقلل من كمية الكود وتحسين كفاءة التطوير. ولكن هناك شيء واحد مميت للغاية ، إنه يستغرق أداءً كبيرًا.
فيما يلي رمز لتقديم الإجراء المخزن MySQL في MyBatis ؛
## 1. هناك طالب طالب طالب (معرف ، اسم ، العمر ، المال) ## 2. قم بإنشاء إجراء مخزن للاستعلام عن معلومات جدول الطالب: SELIMITER | إنشاء الإجراء showAllStu () ابدأ تحديد * من طلب الطالب عن طريق المعرف DESC LIMIT 6 ؛ enddelimiter ## 2. قم بإنشاء إجراء مخزن لحذف السجلات (من خلال معرف الطالب): `` `delimiter | إنشاء الإجراء delbyid (d int (11)) ابدأ حذف من الطالب حيث id = d ؛ enddelimiter ## 3. قم بإنشاء مشروع في Maven: (تم حذفه) //pox.xml التكوين: <Project xmlns = "http://maven.apache.org/pom/4.0.0" XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 <Packaging> WAR </packaging> <soph> 1.0 </version> <name> myBatis-MySql Maven WebApp </ame> <Url> http://maven.apache.org </url> <epenseDencies> <reperence> <roupency> <scope> test </scope> </sependency> <redency> <roupiD> org.projectlombok </rougeid> <intifactid> lombok </tenfactid> <sophid> 1.16.20 </version> <scope> متوفر </scope> <soph> 3.4.6 </version> </sependency> <redency> <roupiD> mysql </rougeid> <StifactId> mysql-connector-java </sh.qos.lgback </splicid> <soph> 1.2.3 </version> <scope> اختبار </scope> </sependency> </reperence> <build> <ninalName> $ {project.artifactid} </initalname> <TestSourCedirectory> src/test/java </testsourcedirectory> src/main/java لا يمكن تحميلها-> <sourses> <sroffect> <Cirlive> src/main/java </directory> <sudge> <sudgency> **/*. <swern> **/*. الخصائص </include> </sroses> </build> </project> ## 4. تكوين إدخال قاعدة بيانات الارتباط (تم حذفه) ، التكوين: mybatis-config.xml: <؟ "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-هذه هي بوابة التكوين لقاعدة بيانات الموارد-> <properties Resource> "db.properties"/>! <Typealias> <!-تكوين الاسم المستعار للفئة النموذجية-> <!-<typealias type = "com.fz.entity.student" alias = "st"/>-> <!-تكوين جميع الأسماء المستعارة ضمن الحزمة المحددة // com package alias under the com.fz.entity book. </stypealiases> <البيئات default = "development"> <البيئة id = "development"> <TransactactionManager type = "jdbc"/> <dataSource type = "prouded"> <property name = "driver" value = "$ {db.driver}"/> <property name = "$ {db.url} value = "$ {db.user}"/> <property name = "password" value = "$ {db.password}"/> </dataSource> </eversity> </eversionments> <mappers> <!-<mapper/>-> <package name = "com.fz.mapper"/>/mappers> </configurn إنشاء كائن فئة الكيان: // الحزمة: COM/FZ/ENTITY/StudentData Public Class Student {private int id ؛ اسم السلسلة الخاصة ؛ عصر INT الخاص ؛ أموال مزدوجة خاصة ؛ } ## 6. إنشاء فئة واجهة الطالب وتكوين studentMapper.xml ؛ // studentmapper interface studentMapper {// stored store reporture Query 6 Records ؛ القائمة العامة <Student> Query () ؛ // الإجراء المخزن يحذف سجلًا (حسب المعرف) العام int delbyid (int id) ؛ } //studentMapper.xml configuration````` <؟ Namespace = "com.fz.mapper.studentMapper"> <select id = "query" resulttype = "student"> {call showAllStu ()} </select> <delete id = "delbyid" parametertype = "int"> {call delbyid (#{id})} </delete> فئة الاختبار: // test/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.after ؛ استيراد org.junit.before ؛ استيراد 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) ؛ قائمة <Tudent> atd = sdd.query () ؛ لـ (الطالب SD: ATD) {system.out.println (SD) ؛ } sdd.delbyid (18) ؛ } before public void init () {inputStream is = null ؛ حاول {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
لخص
ما سبق هو طريقة استخدام الإجراءات المخزنة MySQL في MyBatis المقدمة لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!