يستخدم Foreach بشكل أساسي في البناء في الظروف ، ويمكنه التكرار عبر مجموعة في عبارات SQL. تتضمن سمات عنصر foreach بشكل أساسي العنصر والفهرس والمجموعة والمفتوحة والفاصل والإغلاق. يمثل العنصر الاسم المستعار عندما يتم تكرار كل عنصر في المجموعة. يحدد الفهرس اسمًا لتمثيل الموضع الذي يتم الوصول إليه لكل تكرار أثناء عملية التكرار. يمثل Open ما يبدأ بالبيان ، ويمثل الفاصل ما هي الرموز التي يتم استخدامها كفواصل بين كل تكرار ، ويمثل الإغلاق ما ينتهي. الشيء الأكثر أهمية والأكثر عرضة للخطأ عند استخدام foreach هو سمة المجموعة. يجب تحديد هذه السمة ، ولكن في حالات مختلفة ، تختلف قيمة السمة. هناك ثلاث حالات رئيسية:
1. إذا تم تمريره في معلمة واحدة ونوع المعلمة هو قائمة ، فإن قيمة سمة المجموعة هي قائمة
2. إذا تم تمريره في معلمة واحدة ونوع المعلمة عبارة عن صفيف ، فإن قيمة خاصية المجموعة هي صفيف
3. إذا كانت هناك معلمات متعددة تم تمريرها ، فنحن بحاجة إلى تغليفها في خريطة. بالطبع ، يمكن أيضًا تغليف معلمة واحدة في خريطة. في الواقع ، إذا قمت بالمرور في المعلمات ، فسوف تقوم أيضًا بتغليفها في خريطة في الثدي. مفتاح الخريطة هو اسم المعلمة ، لذلك في هذا الوقت تكون قيمة سمة المجموعة هي مفتاح القائمة أو كائن الصفيف الذي تم تمريره في الخريطة المغطاة بنفسه.
دعونا نلقي نظرة على رموز المثال للحالات الثلاثة المذكورة أعلاه:
1. نوع قائمة المعلمات الفردية:
<حدد ID = "DynamicForeAckTest" resultType = "blog"> حدد * من t_blog حيث المعرف في <foreach collection = "list" index = "index" item = "empel" open = "(" deplator = "،" close = ")>#{item} </foreach>قيمة المجموعة أعلاه هي قائمة ، والخابية المقابلة مثل هذا
القائمة العامة <log> dynamicforeachtest (قائمة <integer> ids) ؛
رمز الاختبار:
testpublic void dynamicforeachtest () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ قائمة <integer> ids = جديد ArrayList <integer> () ؛ ids.add (1) ؛ ids.add (3) ؛ ids.add (6) ؛ قائمة <log> blogs = blogmapper.dynamicforeachtest (IDS) ؛ لـ (Blog Blog: Blogs) System.out.println (Blog) ؛ Session.Close () ؛}2. نوع مجموعة المعلمة المفردة:
<select id = "dynamicforeach2test" resulttype = "blog"> حدد * من t_blog حيث المعرف في <foreach collection = "array" index = "index" item = "item" open = "(" deplator = "،" elut = ")المجموعة أعلاه هي صفيف ، رمز الخريطة المقابل:
القائمة العامة <log> DynamicForeach2Test (int [] ids) ؛
رمز الاختبار المقابل:
testpublic void dynamicforeach2test () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper blogmapper.dynamicforeach2test (IDS) ؛ لـ (المدونة: المدونة) system.out.println (blog) ؛ session.close () ؛}3. قم بتغليف المعلمات في نوع الخريطة بنفسك
<select id = "dynamicforeach3test" resulttype = "blog"> select * from t_blog حيث عنوان مثل "٪"#{title} "٪" و id في <foreach collection = "ids" index = "index" = "item =" ("expens =" ("firedator =" ، "elation =")قيمة المجموعة أعلاه هي IDS ، وهي مفتاح خريطة المعلمة التي تم تمريرها ، ورمز الخريطة المقابل:
القائمة العامة <log> dynamicforeach3test (خريطة <سلسلة ، كائن> params) ؛
رمز الاختبار المقابل:
testpublic void dynamicforeach3test () {sqlsession session = util.getSqlSessionFactory (). opensession () ؛ blogmapper blogmapper = session.getMapper (blogmapper.class) ؛ list final <integer> ids = new arraylist <integer> () ؛ ids.add (1) ؛ ids.add (2) ؛ ids.add (3) ؛ ids.add (6) ؛ ids.add (7) ؛ ids.add (9) ؛ map <string ، object> params = new hashmap <string ، compion> () ؛ params.put ("ids" ، ids) blogmapper.dynamicforeach3test (params) ؛ for (المدونة: المدونة) system.out.println (blog) ؛ session.close () ؛}ما سبق هو المعرفة ذات الصلة بالتفسير التفصيلي لبيان foreach لـ MyBatis الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك!