Foreach wird hauptsächlich beim Aufbau unter Bedingungen eingesetzt. Sie kann über eine Sammlung in SQL -Aussagen iterieren. Die Attribute des Foreach -Elements enthalten hauptsächlich Element, Index, Sammlung, Öffnen, Trennzeichen und Schließen. Element repräsentiert den Alias, wenn jedes Element in der Sammlung iteriert wird. Index gibt einen Namen an, der die Position darstellt, zu der jede Iteration während des Iterationsprozesses erreicht wird. Open repräsentiert, was mit der Aussage beginnt, Separator stellt dar, welche Symbole zwischen jeder Iteration als Trennzeichen verwendet werden, und Close repräsentiert, was mit endet. Das kritischste und fehlerhafteste Sache bei der Verwendung von foreach ist das Sammelattribut. Dieses Attribut muss angegeben werden, aber in verschiedenen Fällen ist der Wert des Attributs unterschiedlich. Es gibt drei Hauptsituationen:
1. Wenn der in einem einzelnen Parameter übergebene Parameter und der Parametertyp eine Liste ist, ist der Sammelattributwert die Liste
2. Wenn der in einem einzelnen Parameter übergebene Parameter und der Parametertyp ein Array ist, ist der Eigenschaftswert der Sammlung Array
3. Wenn mehrere Parameter übergeben werden, müssen wir sie in eine Karte einkapseln. Natürlich kann auch ein einzelner Parameter in eine Karte eingekapselt werden. Wenn Sie Parameter übergeben, werden Sie sie auch in eine Karte in der Brust einkapseln. Der Schlüssel der Karte ist der Parametername. Zu diesem Zeitpunkt ist der Sammelattributwert der Schlüssel der übergebenen Liste oder des Array -Objekts in der von selbst eingekapselten Karte.
Schauen wir uns die Beispielcodes für die obigen drei Situationen an:
1. Typ der einzelnen Parameterliste:
<select id = "dynamicforeachTest" resultType = "blog"> select * aus t_blog wobei ID in <foreach collection = "list" index = "index" item = "item" open = "(" separator = "," close = ")">#{item} </foreach> </select> </select>Der Wert der obigen Sammlung ist die Liste, und der entsprechende Mapper ist wie dieser
öffentliche Liste <blog> dynamicforeachTest (Liste <Gefeger> ids);
Testcode:
@Testpublic void dynamicforeachTest () {SQLSession Session = util.getSQLSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getMapper (blogmapper.class); list <Gefteiger> ids = new ArrayList <Integer> (); ids.add (1); ids.add (3); ids.add (6); Liste <blog> blogs = blogMapper.DynamicforeachTest (IDs); Für (Blog Blogs: Blogs) system.out.println (Blog); session.close ();}2. Art des Einzelparameter -Arrays:
<select id = "dynamicforeach2Test" resultType = "blog"> ausgewählt * aus t_blog wobei ID in <foreach collection = "array" index = "index" item = "item" open = "(" separator = "," close = ")">#{item} </foreach> </select> </select> </select>Die obige Sammlung ist Array, entsprechender Mapper -Code:
öffentliche Liste <blog> dynamicforeach2Test (int [] ids);
Entsprechender Testcode:
@Testpublic void dynamicforeach2Test () {SQLSession Session = util.getSQLSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getMapper (BlogMapper.class); int [] ids = new int [] {1,3,6,9}; liste <blogs <blogs <blogs <blogs <blogs <blogs <] blogs = blogs BlogMapper.Dynamicforeach2Test (IDS); für (Blog: Blogs) system.out.println (Blog); Session.close ();}3.. Einkapseln Sie die Parameter in die Art der Karte selbst ein
<select id = "dynamicforeach3Test" resultType = "blog"> ausgewählt * aus t_blog wob
Der Wert der obigen Sammlung ist IDs, die der Schlüssel der in übergebenen Parameterkarte und der entsprechende Mapper -Code ist:
öffentliche Liste <blog> dynamicforeach3Test (MAP <string, objekt> params);
Entsprechender Testcode:
@Testpublic void dynamicforeach3Test () {SQLSession Session = util.getSQLSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getMapper (blogmapper.class); endgültige Liste <Gefteiger> ids = new ArrayList <Neger> (); ids.Add (1); ids.add (2); ids.add (3); ids.add (6); ids.add (7); ids.add (9); map <String, Objekt> params = new Hashmap <String, Objekt> (); Params.put ("Blogs", ids); BlogMapper.Dynamicforeach3Test (Params); für (Blog: Blogs) system.out.println (Blog); Session.close ();}Das obige ist die relevante Kenntnis der detaillierten Erklärung der vom Herausgeber vorgelegten Foreach -Erklärung von MyBatis. Ich hoffe, es wird für Sie hilfreich sein!