MyBatis中foreach的用法
目录
- `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
- 如果传入的参数是多个时,可以把它们封装成一个
Map
,collection
的属性值为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"
这个userids
是Map
的键
MyBatis中foreach的用法相关推荐
- MyBatis中foreach元素用法解析
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/70946761冷血之心的博客) 动态SQL是MyB ...
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...
- php foreach是什么,php中foreach的用法是什么
php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...
- php的foreach什么意思,php中foreach的用法是什么,php foreach as
php中foreach的用法是什么PHP中foreach的用法是什么,foreach在php中的用法是:[foreach($ array as $ value){要执行的代码:}],对于每个循环,当前 ...
- c语言foreach函数,c中foreach的用法
下面小编就跟你们详细介绍下c中foreach的用法的用法,希望对你们有用. c中foreach的用法的用法如下: c:forEach>用法 博客分类: ?J2EE CC++C#JSPSQL 为 ...
- 关于mybatis中selectKey的用法
在使用MyBatis插入数据进入数据库的时候会用到sequence序列来生成自增的id 这时可以使用selectKey就可以得到sequence的值,同时也会将值返回.不过对于不同的数据库有不同的操作 ...
- MyBatis中foreach用法
foreach用法 SQL语句中有时会使用in关键字,如id in {1,2,3},我们可以使用${ids}方式直接获取值,但是这种方法不能防止SQL注入,想避免SQL注入的话就需要使用#{id}的方 ...
- java中foreach的用法
文章目录 前言 语法 用法 用法1:输出一维数组 用法2:输出二维数组 foreach的局限性 什么是索引 总结 前言 java中foreach,可以认为是增强版的for语句循环,它可以减少代码量,但 ...
- Mybatis 中 selectKey的用法
大家好,我们今天来看下mysql中selectKey的用法. selectKey返回最近一次插入的id 返回自增ID <selectKey resultType="java.lang. ...
- mybatis 中 if else 用法
mybaits 中没有 else 要用 chose when otherwise 代替 下面就是MyBatis中的if....else...表示方法 <choose><when te ...
最新文章
- PHP glob() 函数
- Silverlight实用窍门系列:35.细解Silverlight冒泡路由事件和注册冒泡路由事件【附带实例源码】...
- iOS引入第三发库引发的错误linker command failed with exit code 1
- 【Nginx】 server 配置记录
- 微信有电脑客户端吗_微信电脑版有多难用,你们真的没感觉吗
- python 当前时间的前一天_python中time、datetime模块的使用
- Java-Runtime
- ubuntu测量机器的温度
- 存储过程和存储函数和触发器示例
- 如何修复 AirPods 无法连接到 Mac?
- jvisualvm插件安装
- 基于RFID定位技术的智能仓储管理系统--RFID智能仓储--新导智能
- 点云3D目标检测学习(2):pointnet++源码
- 《LeetCode零基础指南》(第四讲) 一维数组 gyro
- 利用python批量查询企业信息_python批量查询百度收录
- uni-app 编译成H5页面运行,提示“连接服务器超时,请点击屏幕重试”
- Tableau常用可视化图形介绍及其适用场景
- 我的前端成长之路-写给在迷茫路上的人
- GET /static/css/bootstrap.min.js.map HTTP/1.1“ 404GET /static/css/bootstrap.min.css.map HTTP/1.1“404
- 虚拟机Ubuntu18.04中文输入法设置(同时保留系统英文语言)
热门文章
- 持续集成CI, 持续部署CD, 持续交付CD要点
- Docker安装MySQL 8 for Mac(图文详解)
- php while循环语句格式,PHP while 循环
- 309.最佳买卖股票时机含冷冻期
- 30. 与所有单词相关联的字串
- java mxml_Java 之 XML
- 实高斯随机向量与复高斯随机向量
- 2015-11-30 20:59:08之自力更生
- 随机过程(二):更新过程的详细理解
- c语言邻接表存储拓扑排序,拓扑排序(完整案列及C语言完整代码实现)