MyBatis<foreach>标签的用法及多种循环方式
作者:mmseoamin日期:2023-12-25

foreach 的主要作用在构建 in 条件中,它可以在 sql 语句中进行迭代一个集合。foreach 元素的属性主要有 collection,item,separator,index,open,close。

属性描述
collection指定要遍历的集合。表示传入过来的参数的数据类型。该属性是必须指定的,要做 foreach 的对象。
index索引,index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置。遍历 list 的时候 index 就是索引,遍历 map 的时候 index 表示的就是 map 的 key,item 就是 map 的值。
item表示本次迭代获取的元素,若collection为List、Set或者数组,则表示其中的元素;若collection为map,则代表key-value的value,该参数为必选
open表示该语句以什么开始,最常用的是左括弧’(’,注意:mybatis会将该字符拼接到整体的sql语句之前,并且只拼接一次,该参数为可选项
separator表示在每次进行迭代之间以什么符号作为分隔符。select * from tab where id in(1,2,3)相当于1,2,3之间的","
close表示该语句以什么结束,最常用的是右括弧’)’,注意:mybatis会将该字符拼接到整体的sql语句之后,该参数为可选项

1.查询的时候:

	
	
 
	
	
	 
	 
	

2.批量更新的时候

	
	
		
		    UPDATE device 
		    SET 
		       name = #{item.name},
		       no = #{item.no}
		    WHERE  
		       id = #{item.id}  
		
	
	
	
		UPDATE device 
		SET 
		   del_flag = 1
		WHERE 1=1
		AND id IN
	    
	         #{item}
	    
	
	

		update ${tableName} set DEL_FLAG = 1, deleteor = #{deleteor} where id in
		
			#{id}
		
	

3.批量插入的时候

	
    
        INSERT INTO
       	device
        	(id,name,no)
        VALUES
        
            ( #{item.id}, #{item.name}, #{item.no} )
        
    
	
    
    	
        INSERT INTO
       	device
        	(id,name,no)
        VALUES
            ( #{item.id}, #{item.name},#{item.no} )
        
    


		insert ignore into ${tableName} (AIP_ID, BOX_ID) values
		
			(#{id}, #{boxId})