مقدمة إلى MyBatis
MyBatis هو إطار طبقة استمرار ممتازة يدعم استعلامات SQL العادية والإجراءات المخزنة ورسم الخرائط المتقدمة. يقوم MyBatis بإلغاء الإعدادات اليدوية لجميع كود JDBC تقريبًا والمعلمات وتغليف البحث في مجموعة النتائج. يمكن لـ MyBatis استخدام XML البسيط أو التعليقات التوضيحية للتكوين والتعيين الأصلي ، ورسم الخرائط وواجهات Java (كائنات Java القديمة) في سجلات في قاعدة البيانات.
1. mybiats foreach علامة
يستخدم Foreach بشكل أساسي في البناء في الظروف ، ويمكنه التكرار عبر مجموعة في عبارات SQL. تتضمن سمات عنصر foreach بشكل أساسي العنصر والفهرس والمجموعة والمفتوحة والفاصل والإغلاق. يمثل العنصر الاسم المستعار عندما يتم تكرار كل عنصر في المجموعة. يحدد الفهرس اسمًا لتمثيل الموضع الذي يتم الوصول إليه لكل تكرار أثناء عملية التكرار. يمثل Open ما يبدأ بالبيان ، ويمثل الفاصل ما هي الرموز التي يتم استخدامها كفواصل بين كل تكرار ، ويمثل الإغلاق ما ينتهي. الشيء الأكثر أهمية والأكثر عرضة للخطأ عند استخدام foreach هو سمة المجموعة. يجب تحديد هذه السمة ، ولكن في حالات مختلفة ، تختلف قيمة السمة. هناك ثلاث حالات رئيسية:
إذا تم تمريره في معلمة واحدة ونوع المعلمة هو قائمة ، فإن قيمة سمة المجموعة هي قائمة
إذا تم تمريره هو معلمة واحدة ونوع المعلمة عبارة عن صفيف ، فإن قيمة خاصية المجموعة هي صفيف
إذا كان هناك عدة معلمات تم تمريرها ، نحتاج إلى تغليفها في خريطة
الاستخدام المحدد هو كما يلي:
<insert id = "insertbatch" parametertype = "list"> insert في tstudent (name ، age) <foreach collection = "list" item = "item" index = "index" open = "(" elute = ")2. MyBatis ExecutorType.Batch
هناك 3 أنواع من النماذج التنفيذية التي تم إنشاؤها في MyBatis. الافتراضي بسيط. في هذا الوضع ، ينشئ بيانًا مسبقًا جديدًا لتنفيذ كل عبارة ويقدم SQL في سطر واحد ؛ بينما يقوم وضع الدُفعات بإعادة استخدام العبارات المعالجة مسبقًا وينفذ جميع عبارات التحديث على دفعات. من الواضح أن وضع الدُفعات لديه مشاكله الخاصة. على سبيل المثال ، عند إجراء عملية إدراج ، لا توجد طريقة للحصول على المعرف الذي تم تثبيته ذاتيًا قبل تقديم المعاملة ، والتي لا تفي بمتطلبات العمل في موقف معين.
الاستخدام المحدد هو كما يلي:
*طريقة ربيع واحد+mybatis
// احصل على sqlsession // age the sqlsessiontemplate الأصلي من الربيع@autowiredprivate sqlsessiontemplate sqlsessionTemplate ؛ sqlsessionTemplate.getSqlSessionFactory (). opensession (executortype.batch ، false) ؛ // get mapperfoomapper = session.getMapper (foomapper.class) ؛ int size = 10000 ؛ try {for (int i = 0 ؛ i <size ؛ i ++) {foo foo = new = foo () ؛ foo.setname (string.valueof (system.currentTimeMillis ())) ؛ foomapper.insert (foo) ؛ if (i ٪ 1000 == 0 || i == size - 1) {// يدويًا إرسال كل 1000 ، session.commit () e) {// لا يمكن ترحيل البيانات المقدمة.الطريقة 2:
جنبا إلى جنب مع General Mapper SQL الاسم المستعار ، من الأفضل أن يكون اسم الحزمة + اسم فئة
insertbatch public void (MAP <String ، Object> parammap ، قائمة <Sether> قائمة) يلقي استثناء {// الحصول على جلسة جديدة مع الدفعة ، وإرسالها تلقائيًا إلى FALS sqlSessionTemplate.getSqlSessionFactory (). opensession (executorType.Batch ، false) ؛ حاول {if (null! = list || list.size ()> 0) {int lsize = list.size () ؛ for (int i = 0 ، n = list.size () ؛ i <n ؛ i ++) list.get (i) ؛ user.setindate ((string) parammap.get ("indate")) ؛ user.setDatadate ((string) parammap.get ("datadate")) ؛ time // session.insert ("com.xx.mapper.usermapper.insert" ، user) ؛ // session.update ("com.xx.mapper.usermapper.updateByPrimaryer {// إرسال يدويًا كل 1000 ، Session.Commit () لا يمكن إعادة التراجع عنها بعد الالتزام ؛ // تنظيف ذاكرة التخزين المؤقت لمنع Sentlow Session.clearCache () ؛ما سبق هما طريقان لإدخال الدُفعات في MyBatis الذي قدمه لك المحرر (إدراج فعال). آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!