MyBatis هو إطار طبقة الثبات يدعم استعلامات SQL العادية والإجراءات المخزنة والتعيين المتقدم.
يقوم MyBatis بإلغاء الإعدادات اليدوية لجميع كود JDBC تقريبًا والمعلمات وتغليف البحث في مجموعة النتائج.
يمكن لـ MyBatis استخدام XML البسيط أو التعليقات التوضيحية للتكوين والتعيين الأصلي ، ورسم الخرائط وواجهات Java's PoJo (كائنات Java القديمة العادية) في سجلات في قاعدة البيانات.
يأخذ كل تطبيق MyBatis مثيلًا لكائن SQLSessionFactory كأنه قلب.
يمكن الحصول على مثيل لكائن SQLSessionFactory من خلال كائن SQLSessionFactoryBuilder. يمكن بناء كائن SQLSessionFactoryBuilder من خلال ملف تكوين XML أو من مثيل فئة التكوين المحضرة في إدارة الاستخدام السابقة.
dataSource dataSource = blogdataSourceFactory.getBlogDataSource () ؛ TransactionFactory TransactionFactory = New JDBCtransActionFactory () configuration.addmapper (blogmapper.class) ؛ sqlsessionfactory sqlsessionfactory = sqlsessionfactorybuilder (). البناء (التكوين) ؛
لاحظ أنه في هذه الحالة ، فإن التكوين هو إضافة فئة Mapper. فئات MAPPER هي فئات Java ، التي تحتوي على شروح لبيانات رسم الخرائط SQL لتجنب التبعيات في ملفات XML ، لكن رسم خرائط XML لا يزال مطلوبًا في معظم التعيينات المتقدمة (مثل تعيين الانضمام المتداخل).
لهذا السبب ، في حالة وجود ملف تكوين XML ، ستجد MyBatis تلقائيًا وتحميل ملف XML نظير (في هذه الحالة ، استنادًا إلى اسم فئة فئة blogmapper.class ضمن مسار الفصل ، فسيتم تحميل BlogMapper.xml هذا ، فسيكون فئة و XML في نفس دليل الملف.
<؟ يمكن أن يحل المشكلة التي لا يتماشى اسم خاصية النموذج مع اسم عمود العمود في جدول البيانات jdbctype-> <resultmap type = "user" id = "usermap"> <id property = "id" column = "id" javatype = "int" jdbctype = "integer"/ jdbctype = "varchar"/> <result property = "Age" column = "Age" javatype = "int" jdbctype = "integer"/> </resultmap> <!- لاحظ النتيجة هنا. إذا كان عمود == الخاصية ، يمكنك إرجاع كائن Java مباشرة. إذا كان اسم السمة غير متسق مع اسم العمود ، فإن الحل كما يلي: 1. استخدم ResultMap ؛ 2. إرجاع hashmap. 3. استخدم الاسم المستعار لبيان الاستعلام-> <تحديد ID = "getUser" parametertype = "int" resultmap = "usermap"> حدد * من t_user حيث id =#{id} </select> <delete id = "idateuser" parameterty = "int" parametertype = "user"> تحديث t_user تعيين username =#{name} ، العمر =#{Age} حيث id =#{id} </update> <insert id = "insertuser" parametertype = "user"> insert in t_user (username ، age) {#} ، العمود (اسم المستخدم) ، وبالتالي فإن النتيجة تستخدم usermap -> <select id = "getUsers" resultmap = "usermap"> حدد * من T_USER </select> </mapper> التسجيل في mybatis.xml [عند الجمع بين الربيع ، لن يكون ملف التكوين هذا مطلوبًا]
ملف تكوين MyBatis
<؟ الاسم المستعار فئة الكيان-> <typealiases> <!-<typealias type = "com.web.model.user" alias = "user"/>-> <package name = "com.web.model"/> </typealiases> <!-تطوير وضع التنمية: وضع العمل- <dataSource type = "prowed"> <property name = "driver" value = "$ {driver}" /> <property name = "url" value = "$ {url}" /> <property name = "username" value = "$ {username}" /> <property name = "$}} Resource = "com/web/mapper/usermapper.xml"/> <mapper resource = "com/web/mapper/ordermapper.xml"/> <mapper/> </nedgers> </ispification>هنا نستخدم ملف XML للحصول على SQLSessionFactory و SQLSession.
sqlsessionfactory static static getFactory () {/*تدفق src dir*/string resource = "mybatis.xml" ؛/*mybatisutils.class.getResourCeasStream (Resource) ---- من الخطأ !!! * يرجى التمييز بين الاثنين والأسفل * */inputStream inputStream = myBatisutils.class.getClassloader (). الحلول: 1.factory.Opensession (صواب) ؛ 2.Session.Commit () ؛ */ /*استخدم sql xml not annotation*/@@test public void testadd () {sqlsession session = mybatisutils.getFactory (). opensession () ؛ string strup الالتزام*/session.commit (true) ؛ session.close () ؛ system.out.println ("صفوف التأثير .."+إدراج) ؛}@Test public void testselect () {/*set auto commice ، وهو ما يساوي المذكورة أعلاه*/sqlsession = mybatisutils.getFactory () "com.web.mapper.usermapper.getuser" ؛/*إرجاع صفوف التأثير*/user user = session.selectone (بيان ، 3) "com.web.mapper.usermapper.updateuser" ؛/*إرجاع صفوف التأثير*/int update. بيان = "com.web.mapper.usermapper.deleteuser" ؛/*إرجاع صفوف التأثير*/int delete = session.delete (بيان ، 6) ؛ myBatisUtils.getFactory (). opensession () ؛ string struction = "com.web.mapper.usermapper.getusers" ؛/*إرجاع القائمة <Sether>*/list <Sether> المستخدمين = session.selectlist (بيان) ؛ session.commit () ؛ system.println (Parametertype و ResultType هما HashMap:
<SELECT ID = "getUserFormap" parametertype = "hashMap" resultType = "HashMap"> SELECT * من C_USER حيث id =#{id} ؛ </select> test public void getUserformap () {sqlsession session = mybatisutils.getFactory (). opensession () ؛ string state = "com.web.mapper.usermapper.getuserformap" ؛ hashmap <string ، object> map = new hashmap <string ، object> () ؛ session.selectone (بيان ، خريطة) ؛/*الافتراضي ليس التزام تلقائي*/session.commit (صواب) ؛ session.close () ؛ system.out.println ("صفوف التأثير .."+selectone+"، الفئة:"+selectone.getClass ()) ؛} تأثير صفوف .. {id = 1 ، العمر = 12 ، الاسم = luli} ، الفئة: فئة java.util.hashmapلتلخيص ، يمكن ملاحظة أن MyBatis سوف يحلل تلقائيًا ويتغلف وفقًا لنوع المعلمة ونوع النتيجة.
<select id = "getListPage" parametertype = "hashmap" resultmap = "siteextenddaomap"> حدد معرف ، site_id ، site_name ، site_number ، المقاطعة ، المدينة ، المنطقة ، العنوان ، internal_number ، خطوط الطول من tb_site -استخدام الديناميك sql <trim prefix = "were" where "prefix = و checkState! = '' "> و check_state = #{checkState ، jdbctype = integer} </if> <test =" siteid! = null و siteid! = '' "> و site_id مثل concat ('٪' ، #{siteid} ، '٪') </if> concat ('٪' ، #{sitename} ، '٪') </if> <if test = "sitenumber! = null and sitenumber! = ''"> و site_number مثل concat ('٪' ، #{sitenumber} ، '٪') </if> <s test = "presince! #{sitenumber} ، '٪') </if> <if test = "province! = null and province! = ''"> و province = #} -add sort <if test = "sortname! = null و sortname! = '' و sortorder! = null و sortorder! = null و sortorder! = ''>إذا كانت المعلمة هي pojo ، فسيحصل MyBatis تلقائيًا على المعرف من الكائن ؛
<delete id = "delete" parametertype = "user"> delete from tb_user حيث id = #{id} </delete> <delete id = "deletebyid" parametertype = "long" <delete id = "deleteByids"> حذف من TB_USER حيث معرف في -استخدام foreach <foreach collection = "list" item = "id" open = "(" sepanator = "،" close = ")عادة ما تستخدم بالاقتران مع GetListPage.
<select id = "getrows" parametertype = "hashMap" resultType = "long"> حدد العدد (*) من tb_sys_role <test = "keysysrole! = null"> <trim precix = "where" prefixOverrides = "و | <if test = "keysysrole.name! = null و keysysrole.name! = ''"> و name = #{keysysrole.name} </fire> <if test = "keysrole.available! = null و keyssrole.available! = ''" </select>ما سبق هو كل محتوى هذه المقالة حول mybatis باستخدام XML لتحليل الكود. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!