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 parameterType 傳入多個引數的使用MyBatis
- mybatis 的傳入引數如何既有物件又有單個引數MyBatis物件
- Mybatis 傳入多個引數查詢資料 (3種方法)MyBatis
- Mybatis(五)--原始碼分析傳入單個list引數和多個list引數寫法MyBatis原始碼
- Mybatis傳入引數為List物件MyBatis物件
- Mybatis動態傳入order by 引數的時候不生效的問題解決方案MyBatis
- MyBatis中傳入引數為List集合的MyBatis
- mybatis如何傳引數MyBatis
- Mybatis引數傳遞MyBatis
- mybatis sql foreach 引數的傳入的三種情況!!MyBatisSQL
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- Angular 自定義結構化指令,如何傳入多個輸入引數Angular
- 函式呼叫引數變數傳值的問題函式變數
- mybatis基礎03(介面中的多個引數處理)MyBatis
- js中 函式引數的 傳值/傳引用 問題JS函式
- mybatis中mapper.xml檔案引數問題MyBatisAPPXML
- SpringMVC中@RequestBody接收前端傳來的多個引數SpringMVC前端
- MyBatis中foreach傳入引數為list、陣列、map的不同寫法MyBatis陣列
- Mybatis引數傳遞&註解開發MyBatis
- 二維陣列作為引數傳遞問題陣列
- SSM框架中Mybatis傳遞引數的幾種方法SSM框架MyBatis
- Mybatis的引數-parameterTypeMyBatis
- 解決ajax請求引數過多導致引數被截斷的問題
- Mybatis 一級快取和引發的問題MyBatis快取
- LOG巨集的引數問題
- 【YashanDB知識庫】繫結引數,同一個sql多個執行計劃的問題SQL
- HttpClient多檔案上傳程式碼及普通引數中文亂碼問題解決HTTPclient
- mybatis的配置檔案中使用兩個或多個foreach進行多個集合遍歷的問題MyBatis
- SpringBoot系列Mybatis之引數傳遞的幾種姿勢Spring BootMyBatis
- gdb除錯傳入引數除錯
- 記一個 FormData 多檔案上傳問題ORM
- vue 新增axios解決post傳引數為null問題VueiOSNull
- GridView傳遞兩個引數的方法View
- Mybatis入門 Mybatis存在的意義 解決的問題 基本操作MyBatis
- 把介面當作引數傳入
- C語言函式傳遞指標引數的問題詳解C語言函式指標
- post傳引數,但是後端無法接收問題解決後端