MyBatis هو إطار عمل في Java يربط الكائنات بالإجراءات المخزنة أو عبارات SQL من خلال واصفات XML أو التعليقات التوضيحية.
MyBatis هو برنامج مجاني موزعة بموجب Apache License 2.0 وهو إصدار فرع من Ibatis 3.0. ويشمل فريق الصيانة الخاص بها أيضًا أعضاء بدء تشغيل IBATIS.
على عكس أطر التعيين الأخرى للكائنات ، لا تربط MyBatis كائنات Java بجداول قاعدة البيانات ، بل طرق Java مع عبارات SQL. يتيح MyBatis للمستخدمين الاستفادة الكاملة من وظائف قاعدة البيانات المختلفة ، مثل الإجراءات المخزنة ، ووجهات النظر ، والاستعلامات المعقدة المختلفة ، والميزات الملكية لقاعدة البيانات. إذا كنت ترغب في العمل على قواعد البيانات القديمة ، أو قواعد البيانات غير المنتظمة ، أو لديك تحكم كامل في تنفيذ SQL ، فإن MyBatis هو خيار جيد.
بالمقارنة مع JDBC ، يقوم MyBatis بتبسيط الكود ذي الصلة: يمكن تنفيذ عبارات SQL في سطر واحد من التعليمات البرمجية. يوفر MyBatis محرك رسم الخرائط الذي يرسم بشكل إعلاني نتائج تنفيذ عبارات SQL مع شجرة الكائن. يمكن إنشاء عبارات SQL ديناميكيًا باستخدام لغة تعبير تشبه XML مدمجة ، أو استخدام المكونات الإضافية المتكاملة لـ Apache.
يتكامل MyBatis مع Spring Framework و Google Guice ، مما يوفر المطورين من مشكلات التبعية.
MyBatis يدعم التخزين المؤقت للبيانات التعريفية. عندما يتم تمييز عبارة SQL على أنها "قابلة للتخطيط" ، سيتم تخزين جميع البيانات التي تم الحصول عليها من قاعدة البيانات عند تنفيذها لأول مرة في ذاكرة التخزين المؤقت. عندما يتم تنفيذ هذا البيان في المستقبل ، ستتم قراءة النتيجة من ذاكرة التخزين المؤقت بدلاً من ضرب قاعدة البيانات مرة أخرى. يوفر MyBatis تطبيق ذاكرة التخزين المؤقت القائم على Java HashMap افتراضيًا ، بالإضافة إلى موصل افتراضي للتواصل مع Oscache و Ehcache و Hazelcast و Memcached. يوفر MyBatis أيضًا API لتطبيقات ذاكرة التخزين المؤقت الأخرى.
نقاط مهمة
بعد التعلم خلال هذه الفترة ، لا يمكن أن تكون العملية الرئيسية لـ MyBatis هي الخطوات التالية
1. احصل على SessionFactory من ملف تكوين XML ، ثم قم بإنشاء الجلسة المقابلة من SessionFactory.
2. استخدم كائن الجلسة لإكمال عمليات CRUD المقابلة (الإضافة والحذف والتعديل والاستعلام) والتحكم في المعاملة المقابلة على بيانات العمل.
3. أغلق الجلسة المقابلة بعد الاستخدام لتجنب استهلاك الموارد المفرط
4. استخدم ملف Mapper XML المقابل لتكوين عملية الخريطة المقابلة بين Javabean من كيان العمل وجدول قاعدة البيانات.
الاستعدادات قبل الحرب:
1. بيئة التطوير Eclipse Javaee IDE ، JDK 1.6 ، قاعدة بيانات MySQL 5.5
2. قم بتنزيل حزمة الجرة المقابلة للاستخدام لاحقًا
mybatis-3.2.3.zip بعد الضغط ، قم بإخراج mybatis-3.2.3.jar ، => عنوان التنزيل:
mybatis-generator-core-1.3.1.jar => عنوان التنزيل: http://code.google.com/p/mybatis/wiki/generator (يقوم MyBatis بإنشاء حزمة ملفات التكوين تلقائيًا)
mysql-connector-java-5.1.26-bin.jar => عنوان التنزيل: http://dev.mysql.com/downloads/connector/j/ (حزمة برنامج تشغيل JDBC MySql)
خطوات البناء
بعد ذلك ، يمكنك إنشاء مشروع مشروع Java يسمى MyBatisDemo ضمن Eclipse ، وإنشاء بنية الحزمة المقابلة وهيكل المجلد كما هو موضح في الشكل أدناه ، حيث يكون التهيئة والخائط المجلدات على التوالي.
يتم تخزين برنامج العداء التجريبي المقابل وكائنات Javabean ضمن حزمة David.Mybatis.demo و Package David.Mybatis.model ، يتم تخزين حزم جرة الجهات الخارجية التي تم تنزيلها للتو في مجلد LIB.
بعد إنشاء الدليل التالي ، يمكننا إضافة حزمة الجرة المقابلة كما هو موضح في الشكل أدناه
بعد الانتهاء ، قم بتنفيذ SQL التالي لإنشاء بنية الجدول المطلوبة للعروض التوضيحية ، بما في ذلك 3 جداول ، وجدول الزوار (جدول الزوار) ، وموقع الويب (جدول الموقع) ، والقناة (جدول القناة)
/. Visitor (id) ، status int int not null default 1 ، createTime dateTime)/*إنشاء جدول القناة*/إنشاء قناة الجدول (ID int not not null key auto_increment ، name varchar (1000) not null ، WebsiteID int References Website (id)
بعد كل هذا ، سنبدأ في القيام بذلك ~
كما هو مذكور في البداية ، تنشأ جميع تكوينات MyBatis من ملف تكوين XML. نحتاج إلى إنشاء ملف تكوين جديد يسمى MyBatis_Demo_Config.xml في مجلد التكوين. هذا الشيء هو واحد من العمليات الأساسية التي نحتاجها إلى العمل لاحقًا.
عند تكوين هذا الملف ، يجب أن تنتبه إلى العناصر في العقدة <iscoxuration> التي لها متطلبات ترتيب هرمية ولا يمكن تغييرها حسب الرغبة. بخلاف ذلك ، سيحدث استثناء عند تحميل ملف تكوين XML ، مما يؤدي إلى عدم نجاح العمليات اللاحقة.
للحصول على أوصاف عقدة محددة ، يمكنك التحقق من http://mybatis.github.io/mybatis-3/zh/configuration.html#. هنا نتحدث فقط عن العقد الأكثر استخدامًا ، والطينات ، والبيئات ، والمحركات.
1. typealiases => الاسم المستعار العقدة. يمكنك تعيين خصائص هذه العقدة بحيث يتم استخدام هذا الاسم المستعار بدلاً من اسم مؤهل بالكامل في ملف التكوين.
على سبيل المثال <typealias type = "david.mybatis.model.visitor" alias = "visitor" />
2. البيئات => عقدة البيئة ، وتكوين المعلومات المتعلقة بتوصيل البيانات
3. MAPPERS => تكوين عبارات تعيين SQL.
أبسط تكوين هو كما يلي:
<؟ type = "david.mybatis.model.visitor" alias = "visitor" /> < /typeAliases> <البيئات default = "development"> <البيئة معرفًا = "التطوير"> <المعاملات type = "jdbc"> </crendrageManager> <datasource type = "soled"> ؟ useUnicode = true & nichereding = utf8 لدعم الإدراج الصيني-> <property name = "url" value = "jdbc: mysql: //127.0.0.1: 3306/mybatis_db؟ useUnicode = true & privateDing = utf8"/> value = "123456"/> </dataSource> </eversity> </eversionments> <mappers> <mapper resource = "mapper/visitormapper.xml"/> </nyber> </ispification>
قم بإنشاء فصل جديد يسمى MyBatisutils ضمن الحزمة David.MyBatis.demo ، التي تخزن طرق الحصول على SQLSession وإغلاق SQLSession ، والتي يتم استخراجها لتسهيل إعادة الاستخدام المتعددة.
package david.mybatis.demo ؛ استيراد java.io.inputstream ؛ استيراد org.apache.ibatis.io.resources ؛ import org.apache.ibatis.session.sqlsession david.mybatis.model.crud_enum ؛ الفئة العامة myBatisUtils {private static final string config_path = "config/mybatis_demo_config.xml" ؛ /** احصل على رابط الوصول إلى قاعدة البيانات*/ SQLSession GetSqlSession () {SQLSession Session = null ؛ Try {inputStream Stream = resources.getResourCeasStream (config_path) ؛ . SQLSessionFactory Factory = SQLSessionFactoryBuilder () .Build (تيار) ؛ الجلسة = المصنع. opensession () ؛ } catch (استثناء e) {// todo: التعامل مع الاستثناء e.printStackTrace () ؛ } جلسة العودة ؛ } / * * احصل على رابط الوصول إلى قاعدة البيانات * / إغلاق الفراغ الثابت العام (جلسة SQLSession) {session.close () ؛ } /** رسالة سجل الإرجاع* / public static void showmessages (crud_enum type ، int count) {switch (type) {case add: system.out.println ("added" + count + "record.") ؛ استراحة؛ Case Delete: System.out.println ("deleted" + count + "Records.") ؛ استراحة؛ تحديث الحالة: system.out.println ("تحديث" + count + "السجلات.") ؛ استراحة؛ استعلام الحالة: system.out.println ("Monged" + Count + "Records.") ؛ استراحة؛ قائمة الحالات: System.out.println ("Total" + Count + "Records.") ؛ استراحة؛ الافتراضي: استراحة ؛ }}}قم بإنشاء فئة جديدة تسمى زائر ضمن الحزمة david.mybatis.model لاستخدامها كقائد مقابل أو رسم الخرائط.
package david.mybatis.model ؛ import java.text.simpledateformat ؛ import java.util.date ؛ public class is {private int id ؛ اسم السلسلة الخاصة ؛ البريد الإلكتروني الخاص بالسلسلة الخاصة ؛ حالة int الخاصة ؛ تاريخ خاص CreateTime ؛ Public Visitor () {// TODO Auto Constructor Constructor CreateTime = New Date () ؛ } الزائر العام (اسم السلسلة ، سلسلة البريد الإلكتروني) {this.name = name ؛ this.email = البريد الإلكتروني ؛ this.status = 1 ؛ this.createTime = تاريخ جديد () ؛ } public int getId () {return id ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getName () {return name ؛ } public void setemail (string email) {this.email = email ؛ } السلسلة العامة getEmail () {return email ؛ } التاريخ العام getCreateTime () {return createTime ؛ } Override public string toString () {// todo method method string string.format ("{id: ٪ d ، name: ٪ s ، createTime: ٪ s}" ، id ، name ، new SimpleTformat ("yyyy-mm-dd hh: mm: ss"). format (createTime)) ؛ }}قم بإنشاء زيارة جديدة.
هنا يجب أن تلاحظ أن مساحة الاسم => david.mybatis.demo.ivisitoroperation يجب أن ترتبط باسم الملف الفعلي أدناه الحزمة المقابلة. خلاف ذلك ، لا يمكن تحميل ملف التعيين المقابل بنجاح.
<mapper namespace = "david.mybatis.demo.ivisitoroperation"> <select id = "basicquery" parametertype = "int" resulttype = "visitor"> select * from from where id =#{id} و status> 0 order by id </select> </mapper> قم بتشغيل البرنامج التالي التالي
public static void testbasicquery (int id) {sqlsession session = mybatisutils.getSqlSession () ؛ جرب {visitor visitor = (visitor) session.selectone ("david.mybatis.demo.ivisitoroperation.basicquery" ، id) ؛ mybatisutils.closesession (جلسة) ؛ system.out.println (زائر) ؛ } catch (استثناء e) {// todo: استثناء التعامل}}} أبسط نتيجة تنفيذ هي خارج
هذا هو Helloword of the MyBatis Series ~