Mybatis中遍历List、Set、Array、Map

来源:互联网 发布:淘宝店铺优惠卷图片 编辑:程序博客网 时间:2024/06/04 20:12

关于Mybatis中遍历集合的整理


使用Mybatis多了,自然会碰见各种在Mapper文件遍历集合的问题,特整理一份记录以便查看。个人觉得Mybatis中的foreach标签属性 说清楚就ok了。

foreach中的各种属性整理如下(先从简单的说):


index : 指定一个名称,什么意思呢?就是和java中的标准for循环中的i是一个意思,我们定义成index,在语句中可以用#{index}取出对应的下标。既然是下标那就是从零开始啦。


open : 指定循环开始前的开始符一般就是“(”
close : 指定循环结束后的结束符一般就是“)”

ps –> 如果不指定 open close属性 mybatis默认不会添加,情景就是批量插入数据时,传入的参数为List泛型为map,由于批量插入时是这种格式: insert into(f1…fn) values(v1…vn),(m1…mn),(j1…jn)这时候如果定义 open close 就会出错。


separator :循环中元素的分割符一般指定为“,”


item :是循环中遍历出的元素,如果传入的参数为list/set/array,item是list/set/array中的元素,如果传入的是list泛型为map的 item就是map的entry,需要通过key来取value,如果key为纯字符也就是没有“.”、“:”等特殊字符可以直接用“.”来取值,如果有请用”[]”取值 []中的字段不要加引号、不要引号、不要引号。


collection : 终于说到它了,关于这个网上有很多资料,总是一二三种情况。在我看来我们完全没有必要去记那些规则,如果是多个参数mybatis会封装成map ,该属性的值就设置为map中集合的key值就可以了,如果是单参数建议也封装进map就ok了 ,世界一下就清净了。


ps –>为什么要用map来封装参数呢,想想那天业务需要你加几个参数的时候你要怎么处理呢。为啥要用set呢,因为去重。

原创粉丝点击