1. 程式人生 > >mybatis foreach中集合的使用

mybatis foreach中集合的使用

方式一:把list或者陣列包裝到map中,傳遞到mapper檔案中的引數是map

1、把陣列包裝到map中:

java程式碼:

Long[] id = {1,2};
Map queryMap = new HashMap();
queryMap.put("id", id);
getSqlSession().update(queryMap, "deleteConbineCode");

xml

<update id="deleteConbineCode" parameterType="map">
        DELETE from combine_code_normal
        where id in
        <foreach item="item" index="index" collection="id" open="("  separator="," close=")">  
            #{item}  
        </foreach>  
    </update>

注:parameterType中接受的是map型別,foreach中collection中是map中放的key。

2、把list<物件>包裝到map中

java程式碼

<pre code_snippet_id="612746" snippet_file_name="blog_20150305_1_7164380" name="code" class="java" style="font-size: 14px;">Map tMap = new HashMap();tMap.put("id",1);tMap.put("id",2);
List<Map> list = new ArrayList<Map>();<pre code_snippet_id="612746" snippet_file_name="blog_20150305_1_7164380" name="code" class="java" style="font-size: 14px;"><pre name="code" class="javascript" style="font-size: 14px;">list.add(tMap);<pre name="code" class="javascript" style="font-size: 14px;">//上面構造了一個集合,集合裡面是Map物件
Map queryMap = new HashMap();
queryMap.put("id",<span style="font-family: Arial, Helvetica, sans-serif;">list</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
getSqlSession().update(queryMap, "deleteConbineCode");
xml
<update id="deleteConbineCode" parameterType="map">
        DELETE from combine_code_normal
        where id in
        <foreach item="item" index="index" collection="id" open="("  separator="," close=")">  
            #{item.id}  
        </foreach>  
    </update>
3、把list<基本型別>包裝到map中

java程式碼

//上面構造了一個集合,集合裡面是基本型別
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(3);
Map queryMap = new HashMap();
queryMap.put("id",list);
getSqlSession().update(queryMap, "deleteConbineCode");

xml

<update id="deleteConbineCode" parameterType="map">
        DELETE from combine_code_normal
        where id in
        <foreach item="item" index="index" collection="id" open="("  separator="," close=")">  
            #{item}  
        </foreach>  
    </update>


方式二:直接使用陣列或者list作為引數傳遞到mapper檔案
1、list方式:

java程式碼:

//構造了一個集合,集合裡面是基本型別
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
List<Map> = getSqlSession().selectList(sqlName,list);
xml:
<select id="selectTotalImpression1"  resultType="java.util.Map">
	SELECT * FROM iams_adplacement_impression
	WHERE TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(time)) >= 1
		AND adplacement_id in 
		<foreach collection="list" index="index" item="item" open="(" separator="," close=")">  
	            	#{item}   
	    	</foreach> 
</select>
2、陣列
java程式碼:
//構造了一個數組,數組裡面是基本型別
Integer[] ids = {1,2};
List<Map> = getSqlSession().selectList(sqlName,ids);
xml程式碼:
<select id="selectTotalImpression1"  resultType="java.util.Map">
	SELECT * FROM iams_adplacement_impression
	WHERE TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(time)) >= 1
	AND adplacement_id in 
		<foreach collection="array" index="index" item="item" open="(" separator="," close=")">  
	            	#{item}   
	    	</foreach> 
</select>
注意:對於陣列、list作為引數傳給mapper時,parameterType可以不用寫,直接在foreach中按下面要求指定即可

如果傳入的是單引數且引數型別是一個List的時候,collection屬性值為list .
如果傳入的是單引數且引數型別是一個array陣列的時候,collection的屬性值為array 


相關推薦

mybatis foreach集合的使用

方式一:把list或者陣列包裝到map中,傳遞到mapper檔案中的引數是map 1、把陣列包裝到map中: java程式碼: Long[] id = {1,2}; Map queryMap = n

C#foreach出現“集合已修改 可能無法執行列舉操作”的解決方法

不要在列舉集合的操作(例如foreach)中去執行修改集合的操作。很多文章中提出解決方法是將foreach改為for迴圈,這裡記錄一種簡便方法。如果需要修改集合,那麼你應該先使用 ToArray() 方法,例如?1234foreach (var x in Mylist.ToA

Mybatis foreach遍歷集合的key和value

以動態order by為例,即通過if和foreach標籤動態拼接order by的排序欄位 Mapper.xml <select id="dynamicOrder" resultType="com.p7.demo.model.Person"> select * f

Mybatis foreach 請求引數是物件集合

需求 引數是物件集合/** * 查詢對應客戶的聯絡人資訊 * @param qeury * @return */ public List<CustomerContactInfoList> getCustomerContactInfoList(List<

Mybatis框架mapper配置和foreach標籤的使用

foreach標籤下面介紹一下一個mapper配置檔案中的foreach標籤(注意,要跟著前面的總結來看,這裡使用的例子是結合前面的工程寫的,大部分程式碼沒有再贅述)foreach的作用是向sql傳遞陣列或List,mybatis使用foreach解析1.1需求在使用者查詢列

C#實現在foreach刪除集合的元素

1 2 3 4 5 6 7 8 List<string> str = new List<string>(); str.Add( "zs"); str.Add("ls");

foreach 實現 MyBatis 遍歷集合與批量操作資料

一、寫在前面 MyBatis 動態 SQL 的一個常用的操作需求是對一個集合進行遍歷,通常是在構建 IN 條件語句的時候。foreach允許你指定一個集合,宣告可以在元素體內使用的集合項(item)和索引(index)變數。foreach 是動態 SQL 中

Mybatis Collection查詢集合只出現一條數據

img int ron src per rda entity 級聯 如果 1、原因 如果兩表聯查,主表和明細表的主鍵都是id的話,明細表的多條只能查詢出來第一條。 2、解決辦法 級聯查詢的時候,主表和從表有一樣的字段名的時候,在mysql上命令查詢是沒問

C#集合ArrayList與Hashtable的使用

mov eat 重新 hashtable table bject remove 第一個 循環 C#中集合ArrayList與Hashtable的使用 http://blog.csdn.net/linukey/article/details/42506819 ArrayL

Mybatis框架Mapper文件傳值參數獲取。【Mybatis

ram keyword ddr gem cli view ati copyto one Mybatis框架中,Mapper文件參數獲取一般有以下幾種: 1、參數個數為1個(string或者int) dao層方法為以下兩種: [java] view plain

Java集合類容器初步了解

equals treemap 輸入 strong 字符串數組 通過 system 結構 shm   容器(Collection)     數組是一種容器,集合也是一種容器     java編程中, 裝其他各種各樣的對象(引用類型)的一種東西, 叫容器     (圖書

PHP在foreach對$value賦值無效,應該用 ‘鍵’ 或者 &$value的形式

image blank key warn 運行 clas 應該 發現 建議 首先我們看下這段代碼: foreach ($data as$value) { $value[‘name‘] = ‘Hehe‘; } $data中原始的數據為: array(

在彈框獲取foreach遍歷的id值,並傳遞給地址欄(方法2)

ges 應該 我們 png 地址欄 each 獲取 賦值 有時 1.php有時候我們需要再彈框中獲取foreach中遍歷的數據(例如id),在彈框中點擊按鈕並傳遞給地址欄跳轉。那麽應該怎麽做呢。第二種方法。 2. 可以在彈框中給出一個input hidden 點擊按鈕彈窗時

SSM:spring+springmvc+mybatis框架的XML配置文件功能詳細解釋

con initial -m and 整理 .get 尺寸 internal 頁面 SSM:spring+springmvc+mybatis框架中的XML配置文件功能詳細解釋 2016-04-14 23:40 13030人閱讀 評論(2) 收藏 舉報

Python集合(set)的基本操作以及一些常見的用法

python set 集合 集合的一些常見用法 Python除了List、Tuple、Dict等常用數據類型外,還有一種數據類型叫做集合(set),集合的最大特點是:集合裏邊的元素是不可重復的並且集合內的元素還是無序的,所以一般情況下集合常用的兩個場景是:1.去重(如:列表去重);2.關

java集合的擴容

map art 列表 eset ont 實現 ava 大小 ash 對於Java中的各種集合類,根據底層的具體實現,小結了一下大致有3種擴容的方式: 1、對於以散列表為底層數據結構實現的,(譬如hashset,hashmap,hashtable等),擴容方式為當鏈表數組的

Java集合概念

code 速度慢 boolean his 都是 結合 rem [] 特點 1.集合是儲存對象的,長度可變,可以封裝不同的對象 2.叠代器: 其實就是取出元素的方式(只能判斷,取出,移除,無法增加) 就是把取出方式定義在集合內部,這樣取出方式就

MyBatis框架Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder

.cn 創建 ron 子節點 homepage 解析 調用 sco title 在 <MyBatis框架中Mapper映射配置的使用及原理解析(一) 配置與使用> 的demo中看到了SessionFactory的創建過程: SqlSessionFactory

Java集合(List,Set,Map)

比例 正在 earch iterator 試圖 tor 元素 除了 一個 ArrayList 和Vector是采用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,都允許直接序號索引元素,但是插入數據要設計到數組元素移動等內存操作,所以索引數據快插入數據慢

JS集合對象(Array、Map、Set)及類數組對象的使用與對比

new item 是否 匹配 全局搜索 用法 self star 刪除 原文地址 在使用js編程的時候,常常會用到集合對象,集合對象其實是一種泛型,在js中沒有明確的規定其內元素的類型,但在強類型語言譬如Java中泛型強制要求指定類型。 ES6引入了iterable類