اسمحوا لي أن أقدم لك مقدمة موجزة إلى MyBatis
MyBatis هو إطار طبقة استمرار ممتازة يدعم استعلامات SQL العادية والإجراءات المخزنة ورسم الخرائط المتقدمة. يقوم MyBatis بإلغاء الإعدادات اليدوية لجميع كود JDBC تقريبًا والمعلمات وتغليف البحث في مجموعة النتائج. يمكن لـ MyBatis استخدام XML البسيط أو التعليقات التوضيحية للتكوين والتعيين الأصلي ، ورسم الخرائط وواجهات Java (كائنات Java القديمة) في سجلات في قاعدة البيانات.
هذه المقالة هي في الواقع ملخص لعملية Java Oracle Type XMLType Summary 2: باستخدام MyBatis.
ينفذ MyBatis محولًا مخصصًا ، وهو أمر بسيط للغاية. تنقسم خطواتها الرئيسية إلى ثلاث خطوات. هنا نأخذ أنواع XMLType تشغيل كمثال.
الخطوة الأولى
قم بإنشاء فئة تحويل جديدة لتنفيذ واجهة TypeHandler. تحدد الأدوية الواجهة نوع المعلمة ، وإذا لم يتم تحديدها ، فهو كائن:
الطبقة العامة XMLTYPETYPEHALDLERS
تحتوي هذه الواجهة على الطرق الأربعة التالية:
public void setParameter (preparedStatement PS ، int I ، string parameter ، jdbctype jdbctype) السلسلة العامة getResult (ResultSet rs ، string columnname) يلقي sqlexceptionp string getResult (resultset rs ، int columnindex)
يجب فهم وظيفة الطريقة بالاسم. SetParameter هي عملية عند المرور في المعلمات. يمكن كتابة الرمز الذي يجب معالجته قبل تمرير المعلمات إلى قاعدة البيانات في هذه الطريقة. الثلاثة الأخرى هي طرق الحصول على نتيجة الاستعلام. بعد الحصول على نتيجة الاستعلام من JDBC ، يمكن تحويله إلى أي نوع تريده.
الخطوة 2
في Mapper-Config ، قم بتسجيل فئة المحول التي قمت بتطبيقها ، حيث يتم تعريف النوع الذي يمكن أن يحدده JDBCType بوضوح في فئة التعداد MyBatis org.apache.ibatis.type.jdbctype. لا يمكن أن تكون قيمة أخرى غير التعداد ، وإلا فإن الخطأ سيحدث. هنا ، نظرًا لأن التعداد لا يحتوي على نوع XMLType الذي نحتاجه ، يتم تحديده على أنه غير محدد. (لا يمكنك أيضًا تحديد أنواع محددة. يمكنك استخدام TypeHandler لتحديد فئات محددة عند الاستخدام):
<TypeHandlers> <typeHandler javatype = "string" jdbctype = "undefined" handler = "com.tyyd.dw.context.xmltypepeyhandler"/> </typeHandlers>
الخطوة 3
استخدم نوع المحول في ملف تعيين Mapper الخاص بك:
أدخل في قيم t_content (<تضمين refid = "fullcolumns"/>) (#{controlid ، jdbctype = bigint} ،#{xmlfile ، javatype = string ، jdbctype = undefined ، typeHandler = com.tyyd.dw.context.xmltypepehandler} ،#{drmfile ، jdbctype = blob})انتبه إلى معلمات XMLFile الواردة ، وتحديد Javatype و JDBCType و TypeHandler ، مما يشير إلى نوع المعالج الذي نريد استخدامه. بالطبع ، يمكنك تحديد واحد منهم فقط ، ولكن يجب أن يكون وجود هذا العنصر فريدًا. إذا كانت المضاعفات هي نفسها تمامًا ولم يكن المواصفات واضحًا ، فسوف يتسبب MyBatis في حدوث خطأ لأنه لا يمكن التمييز.
في هذه المرحلة ، تم تنفيذ محول نوع مخصص لـ MyBatis. تجدر الإشارة إلى أن معالج النوع المحدد أعلاه يعمل فقط عند إدخال البيانات. إذا كنت ترغب في استخدام معالج نوع مخصص أثناء الاستعلام ، فأنت بحاجة إلى تحديده في علامات السمات في ResultMap. أسماء وطرق الاستخدام للعلامات Javatype و JDBCType و TypeHandler هي نفسها ، لذلك لن أكررها هنا.
قم بإرفاق رمز محول النوع الكامل. لأنه عندما يتم الاستعلام عن نوع XMLType ، يمكنك استخدام XMLType.getClobval () في قاعدة البيانات للعودة مباشرة كسلسلة للعمل ، وبالتالي لم تتم معالجة الطرق التي تم إرجاعها بشكل خاص. (يمكنك أيضًا استخدام وظيفة XMLType.getStringVal () لإرجاع السلسلة ، ولكن أثناء الاستخدام الفعلي ، يتبين أنه عندما يكون الحقل لاغيرًا ، فإن GetStringVal () لن يكون هناك خطأ في ORA-06502
/*: إنشاء xmltype عندما يكون هناك حاجة إلى فارغة إذا (stringUtils.isnotBlank (المعلمة)) {devatingConnection connection = (devatingConnection) ps.getConnection (). getMetAdata (). getConnection () ؛ xmltype) ؛} آخر {ps.SetString (i ، null) ؛}}@outridepublic getResult (resultset rs ، string columnname) يلقي sqlexception {// حقل xmltype stridepe ؛ getResult (resultset rs ، int columnIndex) يلقي sqlexception {return rs.getString (columnIndex) ؛}@outridepublic string getResult (callablestatement cs ، int columnIndex) يلقي sqlexception {return cs.getString (columnIndex) ؛}}}ما سبق هو طريقة تنفيذ typehandler لـ MyBatis لتنفيذ محول النوع المخصص بواسطة TypeHandler. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!