2017-07-04 1 views
0

J'ai une requête SQL de ce type de structure:boucle mybatis avec ET

...... 
...... 
where a.id=#{x} AND b.id!=#{x} 
...... 

Maintenant, je veux changer cette requête d'accepter une liste de valeurs de x. Comment dois-je écrire foreach loop pour cela?

Répondre

2

je changerais WHERE la forme SELECT ... FROM ... WHERE a.id IN (...x...) AND b.id NOT IN (...x...)

Ensuite, votre annotation ou XML contiendraient:

SELECT ... 
    FROM ... 
    WHERE a.id IN <foreach item="item" index="index" collection="x" 
     open="(" separator="," close=")"> 
      #{item} 
    </foreach> 
    AND b.id NOT IN <foreach item="item" index="index" collection="x" 
     open="(" separator="," close=")"> 
      #{item} 
    </foreach> 

Cela produira un SQL plus efficace.