From: https://www.cnblogs.com/w-bb/articles/6378031.html

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
foreach元素的属性主要有 item,index,collection,open,separator,close。
    item表示集合中每一个元素进行迭代时的别名,
    index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
    open表示该语句以什么开始,
    separator表示在每次进行迭代之间以什么符号作为分隔 符,
    close表示以什么结束。

在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有一下3种情况:
    1. 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
    2. 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
    3. 如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可

以封装成map,实际上如果你在传入参数的时候,在breast里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key 下面分别来看看上述三种情况的示例代码:
1.单参数List的类型:

1 <select id="dynamicForeachTest" resultType="Blog">
2           select * from t_blog where id in
3        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
4                #{item}
5        </foreach>
6    </select>

2.单参数array数组的类型:

1 <select id="dynamicForeach2Test" resultType="Blog">
2     select * from t_blog where id in
3     <foreach collection="array" index="index" item="item" open="(" separator="," close=")">
4          #{item}
5     </foreach>
6 </select>    

3.自己把参数封装成Map的类型

1 <select id="dynamicForeach3Test" resultType="Blog">
2         select * from t_blog where title like "%"#{title}"%" and id in
3          <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
4               #{item}
5          </foreach>
6 </select>

错误示例:

使用in的时候,不能这样写 in ${skuIds}
应该使用foreach标签

MyBatis中in的使用相关推荐

  1. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  2. MyBatis中#{}和${}的区别

    ------------------------siwuxie095 MyBatis 中 #{} 和 ${} 的区别 1.在 MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{} ...

  3. Mybatis中Oracle和Mysql的Count字段问题

    Mybatis中Oracle和Mysql的Count字段问题 我们在进行项目开发时经常会碰到查询总数的问题,所以我们直接是用select count(1) from table来进行查询.那么在Myb ...

  4. MyBatis中jdbcType=INTEGER、VARCHAR作用

    Mapper.xml中 pid = #{pid,jdbcType=INTEGER} pid = #{pid} 都可以用 Mybatis中什么时候应该声明jdbcType? 当Mybatis不能自动识别 ...

  5. Mybatis 中$与#的区别

    1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 select i ...

  6. MyBatis中使用流式查询避免数据量过大导致OOM

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天mybatis查询数据库中大量的数据,程序抛出: java.lang.OutOfMemoryError: Java heap s ...

  7. 解决MyBatis中 Could not set property ~ o f ~异常

    解决MyBatis中 Could not set property ~ of ~ public class Role {private Integer id; //idprivate String r ...

  8. 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义

    今天突然碰到这个错误,让我复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义 nested exception is org.apache.ibatis.ex ...

  9. rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能

    Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...

  10. mybatis中的resultMap与resultType、parameterMap与 parameterType的区别

    Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与  parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...

最新文章

  1. python多线程下的信号处理程序示例
  2. SpringBoot最最最常用的注解梳理
  3. js 数字相加_Python练习:解题 - 两数相加(JS, TS, PY3版)
  4. 23种设计模式C++源码与UML实现--建造者模式
  5. Linux shell脚本的字符串截取
  6. [动态规划] uestc oj A - 男神的礼物
  7. timerfd_create Function not implemented问题
  8. wpf 写个简单的控件吧
  9. php保存上传的音频文件在哪里,php 视频、音频和图片文件上传,该如何解决
  10. HFSS - 印刷偶极子天线设计与仿真
  11. hadoop学习笔记之-NFS配置
  12. 三种方法求最大公约数
  13. 国内最长的地铁投影画廊在上海地铁诞生
  14. Python实现缺失数字的四种方法
  15. 浏览器劫持事件处置(麻辣香锅)
  16. 《知识图谱》赵军 学习笔记
  17. 电子商务数据分析的认识
  18. 比较 SVFI-RIFE 和 DAIN-APP 补针效果 施工中 ~
  19. leetcode 606 .根据二叉树创建字符串
  20. webpack多入口

热门文章

  1. EF5.x Code First 一对多关联条件查询,Contains,Any,All
  2. Xen的起源与工作原理
  3. django时间问题和时区设置
  4. 让您变的更智慧 秘笈145条(上)
  5. 【原创】指针和下标的10条对比
  6. Windows Server 2003 R2与SP2 的区别
  7. 探索性数据分析(EDA)-不要问如何,不要问什么
  8. 使用Typescript和React的最佳实践
  9. 用户体验改善案例_用户体验案例研究:建立更好的体验(重新设计“和平航空”网站)...
  10. Python——三级菜单