在使用foreach語句時會常常報Parameter ‘ordersList’ not found. Available parameters are [list] 解析這個錯誤,形成這個錯誤的主要緣由你的寫法錯誤:請看錯誤實例
mapper接口中
List<Orders> selectKeyList(List<Integer> ordersList);
在mapper.xml中你的寫法是
<foreach collection="ordersList" item="item" open="and id in(" separator="," close=")" >
#{item}
</foreach>
由下面這段代碼你能夠知道 collection=」ordersList」不能這麼寫
private Object wrapCollection(Object object) {
DefaultSqlSession.StrictMap map;
// 若是傳入參數是一個集合
if (object instanceof Collection) {
//建立1個Map
map = new DefaultSqlSession.StrictMap();
map.put("collection", object);
//注意 若是參數是list
if (object instanceof List) {
//那麼傳來的參數,collection的默認寫法應該 collection="list"
map.put("list", object);
}
return map;
} else if (object != null && object.getClass().isArray()) {
map = new DefaultSqlSession.StrictMap();
//數組的默認寫法爲collection="array"
map.put("array", object);
return map;
} else {
return object;
}
}
因此你的collection=」ordersList」應該改成collection=」list」 這樣就能將錯誤改正,固然若是不想改,那麼只有改動mapper接口中定義的方法了以下:
List<Orders> selectKeyList(@Param("ordersList")List<Integer> ordersList);
這個錯誤也能獲得有效的解決.
---------------------
做者:qq_21863565
原文:https://blog.csdn.net/qq_21863565/article/details/81262834
數組