وغني عن القول أن فوائد تعلم التعليمات البرمجية المصدر صغيرة في الحجم وبسيط في المنطق ، لذلك سأكتب سلسلة من المقالات للتعلم.
SQLSession
توجد بوابة استخدام MyBatis في SQLSession في حزمة org.apache.ibatis.session. لقد وجد أنها واجهة ، ويجب أن يكون هناك فئة التنفيذ الافتراضية DefaultSqlSession في حزمة org.apache.ibatis.session.defaults. لم نلاحظ أبدًا هذا الفصل ، ووفقًا لاتفاقيات Java ، نستخدم طريقة المصنع في SQLSessionFactory. لقد وجدت أنها أيضًا واجهة ، لذلك يجب أن يكون هناك فئة للتنفيذ الافتراضية DefaultSqlSessionFactory. لا يزال هذا الفئة لا يلزم إنشاءه بمفرده ، ويستخدم طريقة المصنع في SQLSessionFactoryBuilder.
DefaultSqlSession
الأساليب الرئيسية في DefaultSqlSession:
1) المؤشر <T> SELECTCURSOR (عبارة سلسلة ، معلمة الكائن ، ROWBOUNDS ROWBOUNDS) ، تم تفويضها إلى Executor.
2) قائمة <E> selectlist (بيان السلسلة ، معلمة الكائن ، ROWBOUNDS ROWBOUNDS) و FOID SELECT (عبارة سلسلة ، معلمة الكائن ، ROWBOUNDS ROWBOUNDS ، RESTANDLER HOLLERLER) ، وتفويض إلى Executor.query (MS ، WRAPCollection (المعلمة) ، ROWBOUNDS ، Handler).
3) تحديث int (عبارة سلسلة ، معلمة الكائن) ، تفويض إلى executor.update (ms ، wrapcollection (المعلمة)).
يمكن ملاحظة أن هناك منفذاً لإكماله في النهاية.
المنفذ
يقع Executor في حزمة org.apache.ibatis.executor. إنها واجهة. فئات التنفيذ هي Baseexecutor و CachingExecutor. من بينها ، Baseexecutor مجردة ولديه ثلاث فئات فرعية SimpleExecutor و reuseexecutor و batchexecutor. انظر الاسم ومعرفة المعنى. الطرق الرئيسية في Baseexecutor:
1) قائمة <e> الاستعلام (mappedStatement MS ، معلمة الكائن ، ROWBOUNDS ROWBOUNDS ، RESTHANDLER RESULTHANDLER ، مفتاح cachekey ، bONDSQL BODEDSQL) وقائمة <e> queryfromdatabase (mappedStatement MS ، معلمة الكائن ، rowbounds ، resulthandler. الخلاصة <e> قائمة <e> doquery (MedStatement MS ، معلمة الكائن ، RowBounds Robounds ، Resulthandler Resulthandler ، Boundsql Boundsql).
2) المؤشر <e> querycursor (MedStateMent MS ، معلمة الكائن ، RowBounds Robounds) ، تم تفويضه إلى الملخص <e> المؤشر <e> doQueryCursor (MedStateMent MS ، معلمة الكائن ، Rowbounds rowbounds ، boundsql boundsql).
3) تحديث int (MedStatement MS ، معلمة الكائن) ، تفويض إلى الملخص int doupdate (MedpedStatement MS ، معلمة الكائن).
تقوم الطبقة الأساسية بمعالجة الجزء العام ، وتركه لتنفيذ الفئة الفرعية.
دعونا نلقي نظرة على الأساليب الرئيسية في SimpleExecutor:
1) قائمة <e> doquery (mappedStatement MS ، معلمة الكائن ، RowBounds Robounds ، Resulthandler Resulthandler ، Boundsql Boundsql) ، تم تفويضها إلى المعالج. <e> الاستعلام (STMT ، Resulthandler).
2) المؤشر <e> doQueryCursor (MedStateMent MS ، معلمة الكائن ، ROWBOUNDS ROWBOUNDS ، BODEDSQL) ، المكلفة بالمعالج. <e> QueryCursor (STMT).
3) int doupdate (MedStatement MS ، معلمة الكائن) ، مندوب إلى Handler.update (STMT).
يمكن أن نرى أنه يتم التعامل معها أخيرًا من قبل المعالج.
بيان
يقع stitleHandler في حزمة org.apache.ibatis.executor.statement. إنها واجهة. فئات التنفيذ هي BasestatementHandler و RoutingStateMentHandler. BasestatementHandler مجردة ولديه ثلاث فئات فرعية أبسط ، و preparedStatementHandler و CallablestateMentHandler. يجب أن يكون هؤلاء الثلاثة على دراية ، ويجب عليهم التعامل مع عبارات SQL دون معلمات ، وبيانات SQL المعلمة والإجراءات المخزنة على التوالي. دعونا نلقي نظرة على الأساليب الرئيسية في SimplestateMentHandler:
1) قائمة <e> الاستعلام (بيان البيان ، Resulthandler Resulthandler) ، مندوب إلى its.execute (SQL).
2) المؤشر <e> QueryCursor (بيان البيان) ، مندوب إلى بيان. Execute (SQL).
3) تحديث int (بيان البيان) ، مندوب إلى بيان. execute (SQL).
أخيرًا ، يتم تنفيذ SQL بواسطة البيان. هذا يعود إلى حزمة java.sql.
يكمل MyBatis بشكل أساسي معالجة التغليف لمعلمات SQL ، ويحصل على مجموعة النتائج وإنشاء كائنات ، ويترك عملية بناء عبارات SQL للمستخدم. صممه مؤلف MyBatis بهذه الطريقة. على الرغم من أن الإطار شبه التلقائي بشكل عام ، فقد زادت مرونته بشكل كبير.