حول مولد mybatis
MyBatis Generator (MBG) هو مولد رمز MyBatis MyBatis و Ibatis. يمكن أن ينشئ رمزًا لإصدارات مختلفة من MyBatis ، والرمز بعد Ibatis 2.2.0. يمكنه إدخال الجداول (أو الجداول) لقاعدة البيانات ثم إنشاء الكائن الأساسي الذي يمكن استخدامه للوصول إلى الجداول (المتعددة) من الجداول. بهذه الطريقة ، لا توجد كائنات وملفات التكوين مطلوبة عند التفاعل مع جداول قاعدة البيانات. يحل MBG بعض عمليات CRUD البسيطة (إدراج ، استعلام ، تحديث ، حذف) التي لها أكبر تأثير على عمليات قاعدة البيانات. لا تزال بحاجة إلى SQL المكتوبة بخط اليد والكائنات على استعلام الاتحاد وإجراءات مخزنة.
سوف يولد مولد MyBatis:
قد تشمل هياكل طاولة مطابقة Java Pojos:
سيكون هناك علاقة ميراث مناسبة بين هذه الفئات. لاحظ أنه يمكن تكوين المولد لإنشاء التسلسلات الهرمية لأنواع مختلفة من pojos. على سبيل المثال ، إذا كنت تفضل ، يمكنك اختيار إنشاء كائن كيان منفصل لكل جدول.
MyBatis/Ibatis متوافق مع ملفات XML SQL-Mapping. تقوم MBG بإنشاء SQL في التكوين لعمليات CRUD البسيطة لكل جدول. تتضمن عبارات SQL التي تم إنشاؤها:
اعتمادًا على بنية الجدول ، ستختلف العبارات التي تم إنشاؤها (على سبيل المثال ، إذا لم يكن هناك مفتاح أساسي في الجدول ، فلن يقوم MBG بإنشاء التحديث بواسطة طريقة المفتاح الأساسي).
ستستخدم فئة عميل Java الكائن أعلاه بشكل مناسب ، وهو اختياري عند إنشاء فئة عميل Java. ستقوم MBG بإنشاء فئة العميل التالية لـ MyBatis 3.x:
فئة واجهة Mapper التي يمكن استخدامها مع MyBatis 3.x
ستقوم MBG بإنشاء فئة العميل التالية لـ Ibatis 2.x:
فئة DAO التي تتوافق مع إطار الربيع.
استخدم فقط DAO من IBATIS SQL Mapping API. يمكن إنشاء هذا DAO بالطريقتين التاليتين: توفير sqlmapclient من خلال طرق البناء أو حقن Setter.
DAO متوافق مع إطار Ibatis DAO (جزء اختياري من Ibatis ، الذي عفا عليه الزمن ، نوصي باستخدام Framework SPRING بدلاً من ذلك).
يمكن أن يعمل مولد MyBatis بشكل جيد في بيئة تطوير تكرارية ويعمل كمهمة ANT أو مكون مافن في بيئة بناء مستمرة. الأشياء المهمة التالية التي يجب تذكرها عند تشغيل MBG:
ستقوم MBG تلقائيًا بدمج XML الموجودة بالفعل ويتم تكرارها مع الملف الذي تم إنشاؤه حديثًا. لا يقوم MBG بكتابة التعديلات التي أجريتها على XML التي أنشأتها. يمكنك تشغيله مرارًا وتكرارًا دون القلق بشأن فقدان التغييرات المخصصة. سوف يحل MBG محل جميع عناصر XML التي تم إنشاؤها في عمليات التشغيل السابقة.
لا تقوم MBG بدمج ملفات Java ، فيمكنها كتابة الملفات الموجودة أو حفظ الملفات التي تم إنشاؤها حديثًا إلى اسم فريد مختلف. يمكنك دمج هذه التغييرات يدويًا. عند استخدام المكون الإضافي Eclipse ، يمكن لـ MBG دمج ملفات Java تلقائيًا.
الاستخدام الأساسي
يعتمد MBG بشكل أساسي على ملف تكوين XML. أولاً ، يمكننا إعادة إنشاء مشروع جديد يدعى MyBatisGenerator ، وإنشاء ثلاث حزم جديدة باسم Config و David.test و David.MBG. تقوم حزمة التكوين بشكل أساسي بتخزين ملفات التكوين المطلوبة في MyBatis الحقيقي. يمكنك نسخ mybatis_demo_config.xml في المشروع في الفصول السابقة ووضعه في هذا الدليل ، وما إلى ذلك لبرامج الاختبار. كما يوحي الاسم ، فإن David.test هو تخزين الأساليب وبرامج الاختبار التي تستخدم بشكل شائع. يمكنك أيضًا استخدام فئة أداة MyBatisutils في الفصول السابقة وإنشاء الوظيفية الرئيسية المقابلة لأغراض الاختبار. وآخر David.mbg هو XML الذي سنقوم بتكوينه اليوم وتوليد MBG ملف التكوين.
كما هو موضح في الشكل ، أنشأنا ملف تكوين جديد يسمى mbg_configuration.xml أدناه. التفاصيل كما يلي:
<؟ <classpathentry location = "./ lib /mysql-connector-java-5.1.26-bin.jar" /> <context id = "mybatisdemoformysql" targetruntime = "mybatis3"> <!-التحكم في التعليقات-> <someGenerator> <! ما إذا كنت تريد إزالة الطوابع الزمنية لجميع الملفات التي تم إنشاؤها تلقائيًا ، افتراضيًا إلى false-> <property name = "cumpressDate" value = "true" /> < /commentGenerator> <!-قاعدة بيانات التحكم-> <jdbcconnection driverClass = "com.mysql.jdbc.driver" connectionUrl = "jdbc: mysql: //127.0.0.1: 3306/mybatis_db؟ directionDing = utf8" userId = "root" password = "david0110"/> <javatyperesolver> <!-extract decimal and number في أنواع integer-> </javatyperesolver> <!-نموذج يتوافق مع جدول قاعدة البيانات-> <javamodelgenerator targetpackage = "david.model" targetproject = "src"> <property name = "enlabesUbackages" value = "true" /> <property name = "value" /javamodelgener> <sqlmapgenerator targetpackage = "david.mappers" targetproject = "src"> <property name = "enloberPackages" value = "true" /> < /sqlmapgenerator> <! name = "enlabesUBPackages" value = "true" /> <property name = "methodameCalculator" value = "Extended" /> </javaclientgenerator> <!-مخطط قاعدة البيانات الخاصة بك ، يشير tablename domainObjectName = "Visitor" enableCountByExample = "false" enableupDateBateExample = "false" enableleteExample = "false" enlobyelectbyexample = "false" selectixampled = "false <genrecolumn column = "status" delimitedColumnName = "false"/> </table> </sectext> </generatorConfiguration>
يمكنك أن تلاحظ أنها هذه العقد بشكل أساسي
<ClassPathentry> => يمكن استخدام الموقع الذي يتم فيه تخزين حزمة برنامج تشغيل JDBC لاستخدام المسارات النسبية أو المسارات المطلقة. في هذا المثال ، يتم استخدام المسار النسبي.
<context> => تم الالتزام بتكوين جميع الجداول في قاعدة بيانات ، يمكن أن يكون هناك سياقات متعددة ، تكوين واحد mySQL و One Configuration Oracle.
الأسعار الرئيسية تحت العقدة <Context> هي:
<SOMENGERERATOR> => العقد مولد التعليق ، تمثل الطاولات الفرعية 2 في هذا المثال
crucressallcomments => ما إذا كنت تريد إزالة جميع ملفات التعليقات التي تم إنشاؤها تلقائيًا
CURCERSDATE => ما إذا كنت تريد إزالة الطابع الزمني لجميع الملفات التي تم إنشاؤها تلقائيًا ، افتراضيًا إلى FALSE
<jdbcconnection> => معلومات تكوين اتصال قاعدة البيانات
<javatyperesolver> => تحويل أنواع العشرية والأرقام في JDBC إلى تمثيل نموذج java.math.bigdeciaml
<javamodelgenerator> => تكوين فئة كيان PoJO ، TargetPackage = "David.Model" ، المقابلة لتسجيلك ، يمكنك تسميته وفقًا للعمالة الفعلية ، TargetProject = "SRC". في بيئة Eclipse ، يشار إلى المسار إلى مجلد المشروع والمصدر عمومًا باسم دليل SRC. سيتم إنشاء الحزمة الخاصة بك حديثًا في هذا الدليل. إذا لم تكن بيئة Eclipse ، فيجب أن تكون القيمة هنا مسارًا فعليًا لنظام الملفات. إذا لم يكن المسار المحدد موجودًا ، فسيتم الإبلاغ عن خطأ ، لأن MBG لن يقوم بإنشاء المجلد المقابل بمفرده
<sqlmapgenerator> => تكوين لإنشاء الكيان المقابل mapper.xml. لـ MapPer3.x ، نحتاج إلى كتابة = "XMLMAPPER"
<javaclientgenerator> => تكوين إنشاء فئة الواجهة المقابلة ، المقابلة لسلسلة من عبارات SQL طريقة crud في mapper.xml
<giable> => تكوين قاعدة البيانات المقابلة ، والتي تشير إلى أن اسم فئة المجال (أي اسم فئة الكيان) مطلوب. في هذا المثال ، أغلقت جميع معلومات توليد مثال غير ضروري
يمكن التحقق من جميع المعلومات المذكورة أعلاه على الموقع الرسمي للمستندات المقابلة ، أو تنزيلها في ملفي ، مع تعليمات التكوين المقابلة وأمثلة التطبيق ذات الصلة. قم بتنزيل المستند
بعد تكوين المعلومات أعلاه ، ما هي الخطوة الأخيرة؟ سنقوم بتشغيل ملف البرنامج النصي هذا. هناك 4 طرق في الوصف الرسمي. الأول هو من خلال طريقة سطر الأوامر ، يتم إنشاء الثاني والثالث من خلال أدوات مثل ANT أو Maven. يتم إنشاء آخر واحد من خلال كود Java. نستخدم طريقة توليدها من خلال جافا الشعير. طريقة إضافة برنامج نصي تم إنشاؤه إلى فئة Demorun هي كما يلي:
private static void generatembgconfiguration () { /** myBatis يأتي مع أداة المولد لإنشاء الشيء المقابل* / list <string> تحذير = ArrayList جديد <string> () ؛ الكتابة المنطقية = صواب ؛ ملف configfile = ملف جديد ("./ src/david/mbg/mbg_configuration.xml") ؛ ConfigurationParser CP = configurationParser جديد (تحذيرات) ؛ التكوين التكوين = فارغ ؛ حاول {config = cp.parseconfiguration (configfile) ؛ } catch (ioException e) {// todo acto catch block e.printstacktrace () ؛ } catch (xmlparserexception e) {// todo catch catch e.printstacktrace () ؛ } defaultShellCallback Callback = New DefaultShellCallback (الكتابة فوق) ؛ جرب {myBatisGenerator MyBatisGenerator = new MyBatisGenerator (config ، callback ، arnings) ؛ MyBatisGenerator.generate (null) ؛ } catch (invalidConfigurationException e) {// todo catch catch e.printstacktrace () ؛ } catch (sqlexception e) {// todo acto catch block e.printstacktrace () ؛ } catch (ioException e) {// todo acto catch block e.printstacktrace () ؛ } catch (interruptedException e) {// todo catch catch e.printstacktrace () ؛ } system.out.println ("تم إنشاء تكوين MyBatis بنجاح!") ؛ } بعد تشغيله ، قم بتحديث المشروع ، ستجد أن ما يلي يولد التكوين الرئيسي لك. قسم الصندوق الأحمر في الشكل أدناه:
أخيرًا ، دعونا نستخدم النتائج التي تم إنشاؤها تلقائيًا. يمكننا الرجوع إلى الفصول الستة الأولى لإضافة طريقة اختبار CRUD المقابلة إلى Demorun على النحو التالي:
/** معلومات زائر الاستعلام*/ public static void testgenerateadd () {sqlsession session = mybatisutils.getsqlsession () ؛ VisitorMapper Voperation = session.getMapper (visitorMapper.class) ؛ زائر زائر = زائر جديد () ؛ Visitor.SetVisitor_Name ("Hello2") ؛ visitor.setemail ("[email protected]") ؛ Visitor.SetCreateTime (تاريخ جديد ()) ؛ int count = voperation.insert (زائر) ؛ session.Commit () ؛ mybatisutils.closesession (جلسة) ؛ mybatisutils.showmessages (crud_enum.add ، count) ؛ } /** معلومات زائر الاستعلام* / public static void testgeneratequery (int id) {sqlsession session = mybatisutils.getsqlsession () ؛ VisitorMapper Voperation = session.getMapper (visitorMapper.class) ؛ زائر الزائر = Voperation.SelectByPrimaryKey (id) ؛ mybatisutils.closesession (جلسة) ؛ mybatisutils.showmessages (crud_enum.query ، 1) ؛ system.out.println (زائر) ؛ ) VisitorMapper Voperation = session.getMapper (visitorMapper.class) ؛ int count = voperation.deleteByPrimaryKey (id) ؛ session.Commit () ؛ mybatisutils.closesession (جلسة) ؛ mybatisutils.showmessages (crud_enum.delete ، count) ؛ ) VisitorMapper Voperation = session.getMapper (visitorMapper.class) ؛ زائر الزائر = Voperation.SelectByPrimaryKey (id) ؛ system.out.println (زائر) ؛ اسم السلسلة = visitor.getVisitor_Name () ؛ if (name.contains ("update")) {visitor.setVisitor_Name (name.substring (0 ، name.indexof ("update"))) ؛ } آخر {visitor.setVisitor_Name (name + "update") ؛ } int count = voperation.updateByPrimaryKey (زائر) ؛ session.Commit () ؛ mybatisutils.closesession (جلسة) ؛ mybatisutils.showmessages (crud_enum.update ، count) ؛ system.out.println (زائر) ؛ } تشغيل برنامج الاختبار والنتيجة هي
هل تشعر أن استخدام هذا ساعدك على تحسين كفاءتك كثيرًا ، ولا داعي للقلق بشأن التكوينات المرهقة. على الأقل ليس عليك القيام بخطوات متكررة وغير ضرورية. دع هذه تترك إلى الأدوات للقيام^0^. بالطبع ، في الاستخدام الفعلي ، قد نحتاج إلى تعديل معلومات الفئة المقابلة وأسماء معلومات الواجهة بعد الجيل. بالطبع ، هذه أعباء العمل ليست أكثر من اللازم. آمل أن تكون هذه المحتويات مفيدة للطلاب الذين يحتاجون إلى تكوينها اليوم.