Foreach est principalement utilisé dans la construction dans des conditions, il peut itérer une collection dans les instructions SQL. Les attributs de l'élément foreach incluent principalement l'élément, l'index, la collecte, l'ouverture, le séparateur et la fermeture. L'élément représente l'alias lorsque chaque élément de la collection est itéré. L'index spécifie un nom pour représenter la position à laquelle chaque itération est atteinte pendant le processus d'itération. Open représente ce qui commence par l'instruction, le séparateur représente les symboles utilisés comme séparateurs entre chaque itération, et la fermeture représente ce qui se termine. La chose la plus critique et la plus sujette aux erreurs lors de l'utilisation de Foreach est l'attribut de collection. Cet attribut doit être spécifié, mais dans différents cas, la valeur de l'attribut est différente. Il y a trois situations principales:
1. Si le passait dans un seul paramètre et que le type de paramètre est une liste, la valeur d'attribut de collection est la liste
2. Si le passait dans un seul paramètre et que le type de paramètre est un tableau, la valeur de la propriété de la collection est le tableau
3. S'il y a plusieurs paramètres passés, nous devons les encapsuler dans une carte. Bien sûr, un seul paramètre peut également être encapsulé dans une carte. En fait, si vous passez des paramètres, vous les résumerez également dans une carte du sein. La clé de la carte est le nom du paramètre, donc pour le moment, la valeur d'attribut de collection est la clé de la liste passée ou de l'objet de tableau dans la carte encapsulée par elle-même.
Jetons un coup d'œil aux codes d'exemple pour les trois situations ci-dessus:
1. Type de liste de paramètres unique:
<select id = "dynamicForEachTest" resultType = "blog"> sélectionner * from t_blog où id dans <foreach collection = "list" index = "index" item = "item" open = "(" séparateur = "," close = ")"> # {item} </ foreach> </ select>La valeur de la collection ci-dessus est la liste, et le mappeur correspondant est comme ceci
public List <Glog> DynamicForEachTest (list <Integer> ids);
Code de test:
@TestPublic void dynamicForEachTest () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); blogMapper BlogMapper = session.getMapper (blogMapper.class); list <Integer> ids = new ArrayList <inTeger> (); ids.addd (1); ids.AddD (3); ids.add (6); = blogMapper.DynamicForEachTest (ids); pour (blog blog: blogs) System.out.println (blog); session.close ();}2. Type de tableau des paramètres unique:
<select id = "dynamicForEach2test" resultType = "blog"> sélectionner * from t_blog où id dans <foreach collection = "array" index = "index" item = "item" open = "(" séparateur = "," close = ")"> # {item} </ foreach> </lect>La collection ci-dessus est le tableau, le code de mappeur correspondant:
LISTE PUBLIQUE <LOGOD> DynamicForEach2Test (int [] ids);
Code de test correspondant:
@TestPublic void dynamicForEach2Test () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); blogMapper BlogMapper = session.getMapper (blogMapper.class); int [] ids = new int [] {1,3,6,9}; list <blogs = blogs = blogmapper.DynamForForAl2 : blogs) System.out.println (blog); session.close ();}3. Encapsuler les paramètres dans le type de carte par vous-même
<select id = "dynamicForEach3Test" resultType = "blog"> sélectionner * dans T_Blog où le titre comme "%" # {title} "%" et id dans <foreach collection = "ids" index = "index" item = "item" open = "(" séparateur = "," close = ")"> # {item} </ foreach> </lect>La valeur de la collection ci-dessus est IDS, qui est la clé de la carte des paramètres transmise et le code de mappeur correspondant:
public list <glog> dynamicForEach3Test (map <string, objet> params);
Code de test correspondant:
@TestPublic void dynamicForEach3Test () {SQLSession Session = util.getsqlSessionFactory (). OpenSession (); blogMapper BlogMapper = session.getMapper (blogmapper.class); final list <Integer> ids = new ArrayList <Integer> (); ids.addd (1); ids.addd (2); ids.addd (3); ids.addd (6); ids.add (7); ids.addd (9); map <string, objet> params = new hashmap <string, objet> (); params.put ("ids", ids); params.put ("title", "china"); lister <lister = blogs = blogs = blogs = ids); params; blogmapper.damicForEach3test (params); for (blog blog: blogs) System.out.println (blog); session.close ();}Ce qui précède est la connaissance pertinente de l'explication détaillée de la déclaration Foreach de Mybatis qui vous a été présentée par l'éditeur. J'espère que cela vous sera utile!