يتيح لك MyBatis-Spring حقن التعدادات في حبوب الخدمة. عند استخدام Mapper ، لا بأس في الاتصال بـ Mapper تمامًا مثل الاتصال بـ DAO ، ولكن في هذا الوقت لا تحتاج إلى تشفير أي تطبيقات DAO ، لأن MyBatis سيفعل ذلك من أجلك.
باستخدام الخريطة التي تم حقنها ، لن يحتوي الكود الخاص بك على أي تبعيات من MyBatis-Spring وتبعيات MyBatis. هناك مثل هذا الخريطة البسيطة في تطبيقنا. يجب أن تعرف أيضًا أن الخريطة مجرد واجهة:
الواجهة العامة usermapper {user getUser (string userId) ؛ }هذه هي الطريقة التي تستخدم بها mybatis-spring لإنشاء MAPPERS:
<bean id = "usermapper"> <property name = "sqlsessionfactory" ref = "sqlsessionfactory" /> <property name = "mapperinterface" value = "sample.usermapper" /> </bean>
الآن خارغك جاهز للحقن في كائن الخدمة:
<bean id = "fooservice"> <property name = "usermapper" ref = "usermapper"/> </bean>
ملاحظة: يتوافق اسم الفئة الكاملة لواجهة Mapper مع مساحة اسم ملف Configuration Mapper XML.
حول MapPerfactorybean
تنفذ فئة الوكيل التي تم إنشاؤها بواسطة MapPerfactorybean واجهة Mapper (كما في المثال أعلاه: UserMapper) ويتم حقنها في التطبيق. نظرًا لأن الوكيل يتم إنشاؤه في بيئة التشغيل ، يجب أن يكون Mapper المحدد واجهة. بدلا من فئة تنفيذ ملموسة.
ليست هناك حاجة لتسجيل جميع التعدادات في ملف تكوين XML في الربيع. بدلاً من ذلك ، يمكنك استخدام mapperscannerconfigurer ، والذي سيبحث عن المحركات تحت classpath وإنشائها تلقائيًا في MapPerfactoryBeans. لإنشاء mapperscannerconfigurer ، يمكنك إضافة الكود التالي إلى تكوين الربيع:
<Bean> <propery name = "basepackage" value = "org.mybatis.spring.sample.mapper"/> </bean>
تتيح لك خاصية BasePackage تعيين مسار الحزمة الأساسية لملف واجهة Mapper. يمكنك تعيين أكثر من مسار حزمة واحد باستخدام فاصلة فاصلة أو فاصلة كفاصل. سيتم البحث بشكل متكرر في مسار الحزمة المحدد.
لاحظ أنه ليست هناك حاجة لتحديد SQLSessionFactory أو SQLSessionTemplate ، لأن MappersCannerConfigurer سيقوم بإنشاء mapperfactorybean ثم تجميعه تلقائيًا. ومع ذلك ، إذا كنت تستخدم أكثر من مصدر بيانات واحد (وبالتالي SQLSessionFactory متعددة) ، فقد يفشل التجميع التلقائي. في هذه الحالة ، يمكنك استخدام الممتلكات SQLSessionFactory أو SQLSessionTemplate لتعيين المصنع/القالب الصحيح.
يدعم MappersCannerConfigurer التصفية لإنشاء المخططات من خلال واجهات أو التعليقات التوضيحية المحددة. تحدد خاصية التعليقات التوضيحية اسم التعليقات التوضيحية التي سيتم البحث عنها. تحدد خاصية MarkerInterface الواجهة الأصل التي سيتم البحث عنها. إذا تم تحديد كلاهما ، فإن Mapper المضافة إلى الواجهة يطابق كلا المعايير. بشكل افتراضي ، كل من الخصائص خالية ، لذلك يمكن تحميل جميع الواجهات الواردة في الحزمة الأساسية كمحركات.
سيتم تسمية Mapper المكتشفة باستخدام سياسة التسمية الافتراضية لـ Spring لمكون الكشف التلقائي. أي أنه إذا لم يتم العثور على تعليق توضيحي ، فإنه يستخدم اسم الفئة غير المؤهلة غير المؤهلة. ولكن إذا وجدت component أو jsr-330 @EnoTation ، فسيحصل على الاسم.