في هذه المقالة ، سوف نتعرف على عملية الاستخدام والتشغيل لمكالمات MyBatis الإجراءات المخزنة. أولاً ، نقوم بإنشاء إجراء مخزن بسيط
SELIMITER $ قم بإنشاء إجراءات myBatis.ges_user_count (في Age int ، out user_count int) ابدأ تحديد العد (*) من المستخدمين. نهاية $
معنى هذا الإجراء المخزن بسيط نسبيًا ، وهو دخول العمر ثم تنفيذ COUNT COUNT (*) من المستخدمين حيث user.age = العمر إلى user_count ؛ من السهل نسبيًا الحصول على عدد الأشخاص الذين يعانون من العمر يساوي العمر لتعيين قيمة لـ user_count.
التالي هو دعوة الإجراء المخزن. قم بتنفيذ الأمر التالي لإكمال استدعاء الإجراء المخزن.
بعد ذلك ، دعونا نلقي نظرة على كيفية استدعاء الإجراءات المخزنة باستخدام MyBatis.
يضيف usermapper.xml تكوين استدعاء الإجراء المخزن:
<حدد ID = "count" statertytype = "callable" parametermap = "getUserCountMap"> call mybatis.ges_user_count (؟ ،؟) </select>
الوظيفة الرئيسية:
الفئة العامة Learn1Main {public static void main (string [] args) {// myBatis configuration file string Resource = "Learn/MyBatis-Config.xml" ؛ // استخدم loader class لتحميل ملف تكوين myBatis (يقوم أيضًا بتحميل ملف التعيين المرتبط) IssTream Is = Learn1Main.class.getClassLoader (). getResourCeasStream (Resource) ؛ // بناء مصنع sqlsessionsessionfactory sessionFactory = جديد sqlsessionfactorybuilder (). build (IS) ؛ SQLSession Session = SessionFactory.OpenSession () ؛ الخريطة <string ، integer> parametermap = new hashmap <string ، integer> () ؛ parametermap.put ("العمر" ، 12) ؛ parametermap.put ("user_count" ، -1) ؛ session.selectone ("com.tianjunwei.learn.learn1.entity.user.count" ، parameTerMap) ؛ نتيجة عدد صحيح = parametermap.get ("user_count") ؛ System.out.println (نتيجة) ؛ }}نتائج التشغيل:
عملية التنفيذ النهائية هي في التهوية. لا يزال هناك فرق بين استدعاء SQL العادي والإجراءات المخزنة. يستخدم تنفيذ عبارات SQL Callablestatement.
// // معاملة المعاملة الإخراج // // استدعاء الإجراء المخزن لإرجاع النتيجة ، ضع قيمة النتيجة في المعلمة public void handleoutpupparameters (callablestatement cs) يلقي sqlexception {final object parameterObject = parameterHandler.getParameterObject () ؛ metaObject metaparam = configuration.newmetaObject (parameterObject) ؛ القائمة النهائية <ParmeterMapping> parameterMappings = boundsql.getParamEterMappings () ؛ /حلقة لكل معلمة (int i = 0 ؛ i <parametermappings.size () ؛ i ++) {Final ParamEterMapping = parameterMappings.get (i) ؛ . metaparam) ؛ } else {final typeHandler <؟> typeHandler = parameterMapping.getTyPeHandler () ؛ metaparam.setValue (parametermapping.getProperty () ، typehandler.getResult (cs ، i + 1)) ؛ }}}} private void handleerfcursoroutputparameter (resultset rs ، parameTermapping ، metaObject metaparam) يلقي sqlexception {try {final string resultmapid = parametermapping.getResultMapid () ؛ النتيجة النهائية resultmap = configuration.getResultMap (resultMapid) ؛ defaultresulthandler النهائي resulthandler = جديد defaultresulthandler (ObjectFactory) ؛ resultSetWrapper RSW = جديد resultSetWrapper (RS ، التكوين) ؛ HandlerOwvalues (RSW ، ResultMap ، Resulthandler ، New Rowbounds () ، null) ؛ metaparam.setValue (parametermapping.getProperty () ، resulthandler.getResultList ()) ؛ } أخيرًا {// الإصدار #228 (نتائج إغلاق) عناوين المقبلات (RS) ؛ }}ما ورد أعلاه هو استدعاء الإجراء المخزن وعملية التشغيل لتحليل رمز المصدر MyBatis الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!