MyBatis傳入多個引數的問題
在mybatis的mapper配置檔案中,可以利用<foreach>標籤實現sql條件的迴圈,可完成類似批量的sql
mybatis接受的引數分為:(1)基本型別(2)物件(3)List(4)陣列(5)Map
無論傳哪種引數給mybatis,他都會將引數放在一個Map中:
如果傳入基本型別:變數名作為key,變數值作為value 此時生成的map只有一個元素。
如果傳入物件: 物件的屬性名作為key,屬性值作為value,
如果傳入List: "list"作為key,這個List是value (這類引數可以迭代,利用<foreach>標籤實現迴圈)
如果傳入陣列: "array"作為key,陣列作為value(同上)
如果傳入Map: 鍵值不變。
<foreach>標籤的用法:
六個引數:
collection:要迴圈的集合
index:迴圈索引(不知道啥用。。)
item:集合中的一個元素(item和collection,按foreach迴圈理解)
open:以什麼開始
close:以什麼結束
separator:迴圈內容之間以什麼分隔
當:
map 中傳入多個引數 但實際所需引數既要包含String型別,又要包含List型別時的處理方法:
將引數放入Map,再取出Map中的List遍歷
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("status","I");
List<Integer> sourceIds = new ArrayList<Integer>();
sourceIds.add(1);
sourceIds.add(100);
map.put("sourceList",sourceIds);
List<FundOrderCompareResultPo> lists = fundOrderInstPoMapper.compareResultListBySourceId(map);
sql
<!-- 批量查詢對賬後表中記錄 -->
<select id="compareResultListBySourceId" resultMap="CompareResultMap"
parameterType="java.util.Map" >
select inst.source_id as source_Id, sum(inst.order_amount) as compare_valueSum,
count(inst.record_id) as count_number,inst.status as status from
tb_fund_order_inst inst where inst.delete_flag = 'N' and inst.status= #{status}
and inst.source_id in
<foreach collection="sourceList" item="sourceIds" index="index" open="(" close=")" separator=",">
#{sourceIds}
</foreach>
group by inst.source_id
</select>
其中要注意的是:
<foreach collection=" "....> collection 引數 表示要迴圈的集合,開始我命名為list 報錯。意思為宣告為list為空,後來發現
map.put("key",value) ;中的key值不等於collection中的引數,故找不到list
總結一下。。
collection的值其實就是mybatis把引數轉化成Map以後,這個Map的key,但是這個key對應的value必須是一個集合,
可以是陣列,也可以是List
當只傳入list 的時候。collection 屬性值必須為list
當傳入map 時候。list為其中一個引數,這時候collection 的屬性值必須和map中的key一樣,
而#{sourceIds}的命名和map中的key
沒有關係即#{sourceIds}中的命名可以任意命名不必相等
相關文章
- 15.MyBatis傳入多個引數的問題MyBatis
- mybatis 傳入多個引數MyBatis
- MyBatis傳入多個引數MyBatis
- Mybatis parameterType 傳入多個引數的使用MyBatis
- MyBatis傳入多個引數,傳入陣列和列表資料的處理MyBatis陣列
- mybatis 的傳入引數如何既有物件又有單個引數MyBatis物件
- Mybatis 傳入多個引數查詢資料 (3種方法)MyBatis
- Mybatis(五)--原始碼分析傳入單個list引數和多個list引數寫法MyBatis原始碼
- mybatis 傳遞多個引數 --解決mybatis查詢使用多個引數方法--javabean傳統方法和map方法MyBatisJavaBean
- Mybatis傳遞多個引數的4種方式(乾貨)MyBatis
- Mybatis傳入引數為List物件MyBatis物件
- 如何在mybatis 中傳多個引數,如何在mybatis 中遍歷 集合?MyBatis
- MyBatis中傳入引數為List集合的MyBatis
- Mybatis動態傳入order by 引數的時候不生效的問題解決方案MyBatis
- Mybatis引數傳遞MyBatis
- mybatis如何傳引數MyBatis
- 請教一個JSF引數傳遞的問題JS
- mybatis sql foreach 引數的傳入的三種情況!!MyBatisSQL
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- MyBatis引數傳入集合之foreach動態sqlMyBatisSQL
- 請教一個在Tiles中引數傳遞的問題
- Angular 自定義結構化指令,如何傳入多個輸入引數Angular
- mybatis基礎03(介面中的多個引數處理)MyBatis
- 函式呼叫引數變數傳值的問題函式變數
- 有關C++引數傳值的一個問題探討C++
- 一個關於Struts傳引數的問題,請高手來看看............
- js中 函式引數的 傳值/傳引用 問題JS函式
- GridView CommandArgument傳遞多個引數View
- mybatis 多引數 list和StringMyBatis
- 請問大哥,jdon的分頁標籤怎麼傳遞多個引數?
- Jmeter使用_time函式實現同一個介面引數傳入可以每次傳入不同的引數JMeter函式
- mybatis中mapper.xml檔案引數問題MyBatisAPPXML
- SpringMVC中@RequestBody接收前端傳來的多個引數SpringMVC前端
- iOS之@selector的函式傳遞多個引數iOS函式
- MyBatis中foreach傳入引數為list、陣列、map的不同寫法MyBatis陣列
- 二維陣列作為引數傳遞問題陣列
- rake 任務引數傳遞問題解決
- ASP.NET 標記href傳遞多個引數ASP.NET