Parameter 'list1' not found. Available parameters are [list] 解析

 

在使用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

數組

相關文章
相關標籤/搜索