كان سلف Mybatis هو Ibatis ، الذي كان في الأصل مشروعًا مفتوحًا من Apache. في عام 2010 ، تم نقل هذا المشروع من مؤسسة Apache Software Foundation إلى Google Code وتم إعادة تسمية MyBatis. MyBatis هو إطار طبقة استمرار ممتازة يدعم استعلامات SQL العادية والإجراءات المخزنة ورسم الخرائط المتقدمة. يزيل MyBatis الإعداد اليدوي لجميع كود ومعلمات JDBC تقريبًا واسترجاع مجموعات النتائج. يستخدم MyBatis XML البسيط أو التعليقات التوضيحية للتكوين والتعيين الأصلي ، ورسم الخرائط وواجهات Java (خطة كائنات Java القديمة ، وكائنات Java العادية) في سجلات في قاعدة البيانات.
تنقسم بنية MyBatis الوظيفية إلى ثلاث طبقات (يتم استعارة الصورة من موسوعة Baidu):
1) طبقة واجهة API: توفر واجهات برمجة التطبيقات للواجهة للاستخدام الخارجي ، حيث يعالج المطورون قواعد البيانات. بمجرد استلام طبقة الواجهة لطلب المكالمات ، ستقوم باستدعاء طبقة معالجة البيانات لإكمال معالجة البيانات المحددة.
2) طبقة معالجة البيانات: مسؤولة عن بحث SQL محدد ، تحليل SQL ، تنفيذ SQL ومعالجة تعيين نتائج التنفيذ ، وما إلى ذلك. الغرض الرئيسي منه هو إكمال عملية قاعدة البيانات بناءً على طلب المكالمة.
3) طبقة الدعم الأساسية: مسؤولة عن الدعم الوظيفي الأساسي ، بما في ذلك إدارة الاتصال وإدارة المعاملات وتحميل التكوين ومعالجة ذاكرة التخزين المؤقت. هذه كلها أشياء شائعة ، تستخرجها كأبنية المكونات. يوفر الدعم الأساسي للطبقة العليا لطبقة معالجة البيانات.
هنا mybatis بسيط باستخدام العرض التوضيحي.
الهيكل العام
تبعية بوم
يجب الرجوع إلى حزمتين من الجرة ، أحدهما هو MyBatis والآخر هو MySQL-Connector-Java. إذا كان مشروع Maven ، فأضف تبعيات في POM على النحو التالي.
<Rependency> <roupEd> org.mybatis </rougiD> <StifactId> mybatis </shintifactid> <الإصدار> 3.2.3 </version> </sependency> <sependency>
إعداد البيانات
إنشاء بيانات نقطة في MySQL للاختبار:
قم بإنشاء قاعدة بيانات mybatis_test ؛ قم بإنشاء مستخدم الجدول (عدد صحيح من العمر ، NAME VARCHAR (64) ليس افتراضيًا فارغًا '') ؛ أدخل قيم المستخدم (18 ، 'Zhanjindong') ؛ إدراج قيم المستخدم (20 ، 'Zhangsan') ؛
ملف التكوين
هناك حاجة إلى نوعين من ملفات التكوين. واحد هو ملف تكوين MyBatis mybatis-config.xml. في المثال ، إنه تكوين بسيط للغاية. هناك العديد من الإرشادات للتكوين التفصيلي على الإنترنت.
<؟ name = "cacheenable" value = "false" /> <setting name = "usegeneratedKeys" value = "true" /> <setting name = "defaultexecutortype" value = "reuse" /> < /settings> <typealiases> <typealias alias = "user" type. mybatis.user " <TransactionManager type = "jdbc"/> <dataSource type = "prouded"> <property name = "driver" value = "com.mysql.jdbc.driver"/> <property name = "url" value = "jdbc: mysql: //192.168.71.38: 3306/mybatis_test"/> <singer value = "root"/> <property name = "password" value = "123456"/> </dataSource> </evely> </eversionments> <mappers> <mapper resource = "mappers/usermapper.xml"/> </mappers> </ispification>
نوع آخر هو ملف رسم خرائط واجهة الوصول إلى البيانات: في المثال هو usermapper.xml. يمكن العثور على هذا الملف بواسطة SRC/Main/Resource أو Subductory MyBatis. يتم تحديده بواسطة مورد عقدة MAPPERS/MAPPER في MyBatis-Config.xml.
<؟ يجب أن تكون مساحة الاسم هي مسار واجهة usermapper "-> <insert id =" insertUser "parametertype =" user "> insert في قيم المستخدم (الاسم ، العمر) (#{name} ،#{Age}) <!-هنا ، لا يمكن إضافتها هنا في نهاية SQL ، وإلا اسم طريقة الواجهة في واجهة usermapper-> <تحديد ID = "getUser" resultType = "user" parametertype = "java.lang.string"> حدد * من المستخدم حيث name =#{name} </select> </mapper> ملف التعيين المقابل هو واجهة UserMapper ضمن اختبار مساحة الاسم. mybatis ، والتي تحدد الواجهة فقط للوصول إلى جدول البيانات:
package test.mybatis ؛ واجهة عامة usermapper {public void insertuser (مستخدم المستخدم) ؛ المستخدم العام getUser (اسم السلسلة) ؛} بحاجة إلى pojo: user.java
حزمة test.mybatis ؛ مستخدم الفئة العامة {اسم السلسلة الخاصة ؛ عصر عدد صحيح خاص ؛ السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } integer getAge () {return Age ؛ } public void setage (integer age) {this.age = age ؛ } المستخدم العام (اسم السلسلة ، عصر الصدفة) {super () ؛ this.name = name ؛ this.age = العمر ؛ } المستخدم العام () {super () ؛ }} امتحان
تستخدم عملية قاعدة بيانات MyBatis فئة تسمى SQLSession. يتم إنشاء هذه الفئة من خلال SQLSessionFactory. يوصى عمومًا بالحفاظ على SQLSessionFactory على الصعيد العالمي.
testmybatis.java
package test.mybatis ؛ import java.io.ioException ؛ استيراد java.io.reader ؛ استيراد org.apache.ibatis.io.resources ؛ import org.apache.ibatis.session.sqlsessionfactory ؛ org.apache.ibatis.session.sqlsession sqlsessionfactory sqlsessionfactory ؛ static {string Resource = "MyBatis-Config.xml" ؛ قارئ القارئ = فارغ ؛ Try {reader = resources.getResourCeasReader (Resource) ؛ } catch (ioException e) {system.out.println (e.getMessage ()) ؛ } sqlsessionFactory = new SQLSessionFactoryBuilder (). Build (reader) ؛ } sqlsessionfactory sqlsessionfactory العام getSqlSessionFactory () {return sqlsessionfactory ؛ }}رمز الاختبار كما يلي:
testmybatis.java
package test.mybatis ؛ import org.apache.ibatis.session.sqlsession ؛ import org.apache.ibatis.session.sqlsessionfactory ؛ الطبقة العامة testmybatis {Static sqlsessionfactory sqlsessionfactory = null ؛ ثابت {sqlsessionfactory = mybatisutil.getSqlSessionFactory () ؛ } public static void main (string [] args) {testAdd () ؛ getuser () ؛ ) حاول {usermapper usermapper = sqlsession.getMapper (usermapper.class) ؛ مستخدم المستخدم = مستخدم جديد ("Lisi" ، عدد صحيح جديد (25)) ؛ usermapper.insertuser (المستخدم) ؛ sqlsession.commit () ؛ // يجب أن ترسل هنا ، وإلا فلن تدخل البيانات قاعدة البيانات} أخيرًا {sqlsession.close () ؛ }} public static void getUser () {sqlsession sqlsession = sqlsessionfactory.opensession () ؛ حاول {usermapper usermapper = sqlsession.getMapper (usermapper.class) ؛ مستخدم المستخدم = usermapper.getuser ("Zhangsan") ؛ System.out.println ("name:" + user.getName () + "| Age:" + user.getage ()) ؛ } أخيرًا {sqlsession.close () ؛ }}} أشياء يجب ملاحظتها
1. سوف يستخدم MyBatis Log4J لتسجيل السجلات ، ولكن يبدو أن تشغيل وضع التصحيح له تأثير قوي للغاية على الأداء.
2. ذاكرة التخزين المؤقت للاستعلام MyBatis لها تأثير كبير على الأداء ، والفجوة بين التمكين وعدم التمكين كبيرة جدًا.
ملاحظة: يجب إضافة خط ذاكرة التخزين المؤقت إلى ملف Mapper ، وإلا فلن يدخل حيز التنفيذ.
نموذج تنزيل رمز: تنزيل رمز
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.