مقدمة إلى MyBatis
MyBatis هو مشروع مفتوح المصدر من Apache. في عام 2010 ، تم نقل هذا المشروع من مؤسسة Apache Software Foundation إلى Google Code وتم إعادة تسمية MyBatis. وهو يدعم أطر طبقة الثبات الممتازة لاستفسارات SQL العادية ، والإجراءات المخزنة ورسم الخرائط المتقدمة. يقوم MyBatis بإلغاء الإعدادات اليدوية لجميع كود JDBC والمعلمات تقريبًا والبحث عن مجموعات النتائج. يستخدم MyBatis XML أو التعليقات التوضيحية البسيطة للتكوين والتعيين الأصلي لتعيين واجهات و Pojos من Java (كائنات Java القديمة) في سجلات في قاعدة البيانات.
مقدمة إلى MyBatis Interceptor
يوفر MyBatis وظيفة البرنامج المساعد. على الرغم من أنه يسمى البرنامج المساعد ، إلا أنه في الواقع وظيفة اعتراضية. يتيح لك MyBatis اعتراض المكالمات عند نقطة معينة أثناء تنفيذ عبارة تم تعيينها. يوفر لنا MyBatis واجهة اعتراضية ، من خلال تطبيق هذه الواجهة ، يمكننا تحديد اعتراضنا الخاص.
يستدعي MyBatis أربعة أنواع من الطرق افتراضيًا:
1.executor (التحديث ، الاستعلام ، FlushStatements ، الالتزام ، التراجع ، getTransaction ، وثيقة ، isclose)
2. parametherhandler (getParameterObject ، setParameters)
3.ResultSethandler (معالجات ، handoutputparameters)
4. StatementHandler (إعداد ، معلمة ، دفعة ، تحديث ، استعلام)
و أعلاه 4 هي جميع أساليب التكوين. سيتم تنفيذ هذه الطرق في عملية MyBatis (إضافة وحذف وتعديل والاستعلام). ترتيب التنفيذ هو المنفذ ، المعلمة Handler ، Resultsethandler ، و itshandler.
تعريف الواجهة هو:
من بين هذه الطرق الثلاث ، يتم استخدام المكون الإضافي لبناء المعالج ، ويستخدم التقاطع لمعالجة فئات الوكيل ، وإعدادات خاصية اعتراضية SetProperties.
تنفذ فئة البرنامج المساعد واجهة InvocationHandler وإرجاع فئة الوكيل الديناميكي الخاص بـ JDK. لطريقة التفاف المكوّن الإضافي:
تحديد ما إذا كان الكائن الهدف الحالي لديه واجهة يجب اعتراضها. إذا لم يكن الأمر كذلك ، فإنه يعيد الكائن الهدف نفسه ، وإذا كان هناك ، فإنه يعيد كائن وكيل.
إن invocationHandler للكائن الوكيل هو مكون إضافي. عندما يقوم الكائن الهدف بتنفيذ طريقة الواجهة ، إذا تم تنفيذه من خلال كائن الوكيل ، فسيتم استدعاء طريقة الاستدعاء الخاصة بـ InvocationHandler ، وهي طريقة الاستدعاء للمكون الإضافي:
إذا كانت الطريقة التي تم تنفيذها حاليًا هي طريقة محددة تحتاج إلى اعتراضها ، والكائن الهدف ، والطريقة التي سيتم تنفيذها ، ويتم تغليف معلمات الطريقة في كائن استدعاء ، ويتم تمرير الاحتجاج المغطى كمعلمات إلى طريقة اعتراض المعترض الحالي. إذا لم تكن هناك حاجة للاعتراض ، يتم استدعاء الطريقة الحالية مباشرة.
لأسلوب GetSignaturMap
سيحصل GetSignaturMap أولاً على توضيح التقاطع للاعتراض ، وتجاوزه للحصول على سمة النوع ، ثم الحصول على الطريقة مع سمة الطريقة وسمة args استنادًا إلى هذا النوع ، وأرجع خريطة أخيرًا مع مفتاح النوع ومجموعة القيمة <method>. أمثلة: تصفية طريقة التحديث لـ Executor.Class ستنتج مفتاحًا كمنفذ وقيمة كمثيل طريقة ، مع المعلمات المقابلة لطرق MedpedStatement وطريقة الطريقة.
تكوين التقاطع: