mybatis批量操作中<foreach collection="list" item="item" index="index" open="" close="" separator=";">属性的含义
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了
eg:
使用 mybatis 时,如果要使用到 in 写法,要使用 foreach ,里面几个参数,看了很多地方,都说的不清不楚,自己最后各种测试,这里详细说下:
(1)collection = “” ,这个参数是 dao 层(mapper)接口方法里面传过来的集合参数,如果dao 层传的参数只有一个,这里写关键字 list(如果是数组,写 array)
例子:
dao 层:User getInfo(List<Integer> user_ids)
collection = "list"
【
如果有多个参数,并且使用了 @Param 注解(import org.apache.ibatis.annotations.Param),则这里要写注解里面的参数!
例子: dao 层 :User getInfo(@Param("user_ids")List<Integer> user_ids,@Param("xxx")String xxx)
collection = "user_ids"
】
(2)item = “” ,集合里面的单个值,给下面 #{ } 用
(3)index = "" ,这个是遍历的下标,举个简单的例子立刻明白,就是平时 for 循环,我们定义的 i 一样
例子: for(int i = 0 ;i < 10 ; i ++){
}
因此这个参数随便定义都可以,有就行
(4)open separator close 这3个比较好理解,就是 ( , , ,) 这样子啦,拼接括号,中间逗号隔开的意思
————————————————
版权声明:本文为CSDN博主「QQ玉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qinyf2015/article/details/78688877
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通