目录

  • `foreach` 说明
  • `foreach` 使用示例
    • 传递单个 `List`
    • 传递单个数组
    • 封装成 `Map`

foreach 说明

你可以传递一个 list 实例或者 array 数组作为参数对象传给 MyBatis。当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中,用名称作为键。list 实例将会以 list 作为键,而 array 数组实例将会以 array 作为键

foreach 元素的属性主要有 item,index,collection,open,separator,close

  • item:表示集合中每一个元素进行迭代时的别名
  • index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置
  • open:表示该语句以什么开始
  • separator:表示在每次进行迭代之间以什么符号作为分隔符
  • close:表示以什么结束

在使用 foreach 时最关键的也是最容易出错的就是 collection 属性,该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下 3 种情况

  • 如果传入的是单参数且参数类型是一个 List 时,collection 属性值为 list
  • 如果传入的是单参数且参数类型是一个 array 数组时,collection 的属性值为 array
  • 如果传入的参数是多个时,可以把它们封装成一个 Mapcollection 的属性值为 Map 的键
  • 如果传入的参数是多个时,也可以把它们封装成一个 Object

foreach 使用示例

传递单个 List

public List<User> selectByList(List<User> list);
<select id="selectByList" parameterType="java.util.List" resultType="user">select * from user <where><!-- 传递List,List中是pojo --><if test="list!=null"><foreach collection="list" item="item" open="and id in(" separator="," close=")">#{item.id} </foreach></if></where>
</select>

传递单个数组

public int deleteByIds(String[] ids);
<delete id="deleteByIds" parameterType="java.lang.String">DELETE FROM cms_articleWHERE article_id in<foreach item="item" index="index" collection="array"  open="(" separator="," close=")">#{item}</foreach>
</delete>

封装成 Map

List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");Map<String, Object> map = new HashMap<>();
map.put("userids", list);List<UserInfo> selectUserInfoByForEach(Map<String,Object> map);
<select id="selectUserInfoByForEach" parameterType="java.util.Map" resultMap="UserInfoResult">  select * from userinfo  <if test="userids!=null">  where userid in  <foreach item="ParamsId" collection="userids" index="index"  open="(" separator="," close=")">  #{ParamsId}  </foreach>  </if>
</select>
  • collection="userids" 这个 useridsMap 的键

MyBatis中foreach的用法相关推荐

  1. MyBatis中foreach元素用法解析

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/70946761冷血之心的博客)          动态SQL是MyB ...

  2. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?

    foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...

  3. php foreach是什么,php中foreach的用法是什么

    php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...

  4. php的foreach什么意思,php中foreach的用法是什么,php foreach as

    php中foreach的用法是什么PHP中foreach的用法是什么,foreach在php中的用法是:[foreach($ array as $ value){要执行的代码:}],对于每个循环,当前 ...

  5. c语言foreach函数,c中foreach的用法

    下面小编就跟你们详细介绍下c中foreach的用法的用法,希望对你们有用. c中foreach的用法的用法如下: c:forEach>用法  博客分类: ?J2EE CC++C#JSPSQL 为 ...

  6. 关于mybatis中selectKey的用法

    在使用MyBatis插入数据进入数据库的时候会用到sequence序列来生成自增的id 这时可以使用selectKey就可以得到sequence的值,同时也会将值返回.不过对于不同的数据库有不同的操作 ...

  7. MyBatis中foreach用法

    foreach用法 SQL语句中有时会使用in关键字,如id in {1,2,3},我们可以使用${ids}方式直接获取值,但是这种方法不能防止SQL注入,想避免SQL注入的话就需要使用#{id}的方 ...

  8. java中foreach的用法

    文章目录 前言 语法 用法 用法1:输出一维数组 用法2:输出二维数组 foreach的局限性 什么是索引 总结 前言 java中foreach,可以认为是增强版的for语句循环,它可以减少代码量,但 ...

  9. Mybatis 中 selectKey的用法

    大家好,我们今天来看下mysql中selectKey的用法. selectKey返回最近一次插入的id 返回自增ID <selectKey resultType="java.lang. ...

  10. mybatis 中 if else 用法

    mybaits 中没有 else 要用 chose when otherwise 代替 下面就是MyBatis中的if....else...表示方法 <choose><when te ...

最新文章

  1. PHP glob() 函数
  2. Silverlight实用窍门系列:35.细解Silverlight冒泡路由事件和注册冒泡路由事件【附带实例源码】...
  3. iOS引入第三发库引发的错误linker command failed with exit code 1
  4. 【Nginx】 server 配置记录
  5. 微信有电脑客户端吗_微信电脑版有多难用,你们真的没感觉吗
  6. python 当前时间的前一天_python中time、datetime模块的使用
  7. Java-Runtime
  8. ubuntu测量机器的温度
  9. 存储过程和存储函数和触发器示例
  10. 如何修复 AirPods 无法连接到 Mac?
  11. jvisualvm插件安装
  12. 基于RFID定位技术的智能仓储管理系统--RFID智能仓储--新导智能
  13. 点云3D目标检测学习(2):pointnet++源码
  14. 《LeetCode零基础指南》(第四讲) 一维数组 gyro
  15. 利用python批量查询企业信息_python批量查询百度收录
  16. uni-app 编译成H5页面运行,提示“连接服务器超时,请点击屏幕重试”
  17. Tableau常用可视化图形介绍及其适用场景
  18. 我的前端成长之路-写给在迷茫路上的人
  19. GET /static/css/bootstrap.min.js.map HTTP/1.1“ 404GET /static/css/bootstrap.min.css.map HTTP/1.1“404
  20. 虚拟机Ubuntu18.04中文输入法设置(同时保留系统英文语言)

热门文章

  1. 持续集成CI, 持续部署CD, 持续交付CD要点
  2. Docker安装MySQL 8 for Mac(图文详解)
  3. php while循环语句格式,PHP while 循环
  4. 309.最佳买卖股票时机含冷冻期
  5. 30. 与所有单词相关联的字串
  6. java mxml_Java 之 XML
  7. 实高斯随机向量与复高斯随机向量
  8. 2015-11-30 20:59:08之自力更生
  9. 随机过程(二):更新过程的详细理解
  10. c语言邻接表存储拓扑排序,拓扑排序(完整案列及C语言完整代码实现)