J'ai un site web personnel qui utilise iBATIS 2.3.x. Récemment, je suis l'ajout d'une fonction complexe de recherche sur le site, ont besoin d'interroger les données par une liste d'objets, aime:Est-ce que iBATIS 2.3.x prend en charge foreach?
public Class PromotionAttribute {
String attributeName;
String attributeValue;
}
La requête ressemble à:
select p.* from promotions p
join promotion_attributes pa on p.id=pa.id
where
<foreach item="PromotionAttribute" index="index" collection="list" open="(" separator=" or " close=")">
pa.attribute_name=#{attributeName} and pa.attribute_value=#{attributeValue}#
</foreach>
Pour la requête ci-dessus, c'est seulement un pseudocode puisque je n'ai pas utilisé la version supérieure de iBATIS, sa signification est que je veux générer une condition de requête dynamique.
Ma question est: Je ne sais pas si iBATIS 2.3.x supporte la balise "foreach", sinon, comment implémenter ce type de requête?
Merci, Shuiqing
Donc, je peux spécifier une liste de produit à la "parameterClass"? – Shuiqing
Une autre question similaire, si la parameterClass contient une liste d'objets, aime: public class PromotionAttributeQuery { Long categoryId; Liste promotionAttributeList; } Comment est-ce que j'itère sa liste dans la carte SQL? –
Shuiqing
a modifié la réponse pour utiliser la carte comme paramètre. J'espère que cela répondra à votre Q – Bala