1. ​SELECT​
  2. ​*​
  3. ​FROM​
  4. ​product_db.productinfo pi​
  5. ​WHERE pi.isvalid = 1​
  6. ​AND pi.id IN (22, 60) ​

下面将使用一个简单的过程来演示这个操作


下面这个是mybatis的映射文件

  1. ​<select id="queryAllOpenProduct" parameterType="com.tims.open.domain.OpenProductQueryCondition"​
  2. ​resultType="com.tims.open.domain.OpenProduct">​
  3. ​SELECT​
  4. ​*​
  5. ​FROM​
  6. ​product_db.product p​
  7. ​WHERE​
  8. ​p.isvalid = 1​
  9. ​<if test="list != null">​
  10. ​<foreach collection="list" index="index" item="item" separator="," open="AND p.id IN (" close=")">​
  11. ​#{item}​
  12. ​</foreach>​
  13. ​</if>​
  14. ​</select>​
  15. ​下面是我们的查询condition类​
  16. ​Public OpenProductQueryCondition{​
  17. ​private Integer productId; ​
  18. ​private List<Integer> list;​
  19. ​}​

下面我们对IN操作进行分析

  1. ​<foreach collection="list" index="index" item="item" separator="," open="AND p.id IN (" close=")">​
  2. ​#{item}​
  3. ​</foreach>​

list​ 就是传入的condition中的list,mybatis将会遍历中集合中的元素


index​ 可以添加也可以不添加


item​ 你将要遍历出元素的别名


open ​开始的位置


close​ 什么时候结束



梅花香自古寒来