mybatis 根據多個id查詢資料 foreach標籤
//根據裝置多個id獲取裝置資訊
public List<Devices> getDevicesAll(@Param("devicesIds") String[] devicesIds);
<select id="getDevicesAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from sys_devices d
where
d.devices_id in
<foreach item="devices_id" index="index" collection="devicesIds"
open="(" separator="," close=")">
#{devices_id}
</foreach>
<!-- <where>
<if test="devicesIds != null">
d.devices_id in
<foreach item="item" index="index" collection="array"
open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where> -->
</select>
用param標籤
//根據主鍵ID刪除一條記錄
int deleteCategory(String[] categoryId);
<!-- 根據主鍵刪除一條記錄 -->
<delete id="deleteCategory">
delete from category
where Category_ID in
<foreach item="item" index="index" collection="array" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
這兩種方式
下面是其他的方式
在MyBatis傳入List引數時,MyBatis報錯:nested exception is org.apache.ibatis.binding.BindingException: Parameter 'idList' not found. Available parameters are [collection, list]","request_id":"fe7f7f815c1995a6015c1a22c2540234"}
以下是相關程式碼:
Mapper.java--
mapper.xml
解決方案:
修改Mapper.java:
或
修改mapper.xml
原因:
foreach元素的屬性主要有item,index,collection,open,separator,close。item表示集合中每一個元素進行迭代時的別名,index指定一個名字,用於表示在迭代過程中,每次迭代到的位置,open表示該語句以什麼開始,separator表示在每次進行迭代之間以什麼符號作為分隔符,close表示以什麼結束,在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的,主要有一下3種情況:
-
- 如果傳入的是單引數且引數型別是一個List的時候,collection屬性值為list .
- 如果傳入的是單引數且引數型別是一個array陣列的時候,collection的屬性值為array .
- 如果傳入的引數是多個的時候,我們就需要把它們封裝成一個Map了,當然單引數也可以封裝成map,實際上如果你在傳入引數的時候,在MyBatis裡面也是會把它封裝成一個Map的,map的key就是引數名,所以這個時候collection屬性值就是傳入的List或array物件在自己封裝的map裡面的key.
相關文章
- MyBatis foreach標籤MyBatis
- MyBatis-maven-User例子-根據id查詢UserMyBatisMaven
- day14--【Mybatis】動態代理--根據id查詢MyBatis
- 根據PID查詢 sqlSQL
- mysql like查詢 - 根據多個條件的模糊匹配查詢MySql
- 根據rowid查詢資料檔案號,資料塊號
- mybatis中foreach標籤詳解MyBatis
- pid,sid相互查詢,根據PID查詢sqlSQL
- sql根據多個欄位查詢重複記錄SQL
- Mybatis的 foreach 標籤使用方法.MyBatis
- MyBatis學習——foreach標籤的使用MyBatis
- 根據查詢條件批量修改表資料
- mysql根據查詢結果批量更新多條資料(插入或更新)MySql
- 裝置支援多箱號查詢,mybatis標籤MyBatis
- MSSQL遍歷資料庫根據列值查詢資料SQL資料庫
- mybatis中使用foreach構造多like查詢及批量插入MyBatis
- 根據表查詢索引資訊索引
- 根據父表查詢子表
- Mybatis 傳入多個引數查詢資料 (3種方法)MyBatis
- 根據經緯度座標查詢最近的門店
- Oracle 查詢多個資料Oracle
- C#操作Word之 根據標籤名清除標籤內容C#
- MySQL關於根據日期查詢資料的sql語句MySql
- mybatis foreach標籤的解釋 與常用之處MyBatis
- 微博根據手機號查詢
- 流式查詢1. mybatis的遊標Cursor,分頁大資料查詢MyBatis大資料
- mybatis入門程式:mybatis根據使用者名稱稱模糊查詢使用者資訊MyBatis
- linux根據字尾查詢文字Linux
- 根據欄位名查詢所有表
- 在RFT中根據指定的標題查詢頂層視窗
- 根據Alert日誌查詢資料庫啟動、關閉時間資料庫
- Mybatis實現條件IN查詢(foreach)和invalid comparison異常MyBatis
- IIS7根據PID查詢對應的站點
- mysql千萬級資料量根據索引優化查詢速度MySql索引優化
- 多個遠端資料庫查詢資料庫
- MyBatis從入門到精通(八):MyBatis動態Sql之foreach標籤的用法MyBatisSQL
- 根據關鍵字查詢車輛資訊
- Oracle根據主鍵查詢外來鍵Oracle