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-maven-User例子-根據id查詢UserMyBatisMaven
- day14--【Mybatis】動態代理--根據id查詢MyBatis
- mysql like查詢 - 根據多個條件的模糊匹配查詢MySql
- Mybatis的 foreach 標籤使用方法.MyBatis
- sql根據多個欄位查詢重複記錄SQL
- 根據查詢條件批量修改表資料
- mysql根據查詢結果批量更新多條資料(插入或更新)MySql
- 裝置支援多箱號查詢,mybatis標籤MyBatis
- MSSQL遍歷資料庫根據列值查詢資料SQL資料庫
- [js] 根據元素ID遍歷樹形結構,查詢到所有父元素IDJS
- pid,sid相互查詢,根據PID查詢sqlSQL
- Mybatis 傳入多個引數查詢資料 (3種方法)MyBatis
- mybatis foreach標籤的解釋 與常用之處MyBatis
- mybatis入門程式:mybatis根據使用者名稱稱模糊查詢使用者資訊MyBatis
- 根據經緯度座標查詢最近的門店
- Oracle 查詢多個資料Oracle
- MySQL關於根據日期查詢資料的sql語句MySql
- linux根據字尾查詢文字Linux
- 新手發問 ! Laravel admin 根據ID判斷資料Laravel
- Java根據前端返回的欄位名進行查詢資料Java前端
- 流式查詢1. mybatis的遊標Cursor,分頁大資料查詢MyBatis大資料
- 微博根據手機號查詢
- MyBatis從入門到精通(八):MyBatis動態Sql之foreach標籤的用法MyBatisSQL
- mysql千萬級資料量根據索引優化查詢速度MySql索引優化
- Mybatis系列:解決foreach標籤內list為空的問題MyBatis
- vue+element-ui根據時間查詢VueUI
- Java根據前端返回的欄位名進行查詢資料的方法Java前端
- MyBatis 根據資料表反向生成 java 實體類等MyBatisJava
- mysql千萬級資料量根據索引最佳化查詢速度MySql索引
- Mybatis學習01:利用mybatis查詢資料庫MyBatis資料庫
- Mybatis實現條件IN查詢(foreach)和invalid comparison異常MyBatis
- Mybatis中Foreach動態SQL標籤(map和list兩種情況)MyBatisSQL
- Elasticsearch 按照標籤匹配個數優先排序查詢Elasticsearch排序
- C# 根據前臺傳入實體名稱,動態查詢資料C#
- 根據時間範圍呼叫gitLab介面查詢Gitlab
- mysql根據節點查詢所有葉節點MySql
- SQL server根據表名查詢表主鍵SQLServer
- Python 根據id生成唯一碼Python