解決Parameter 'xxxList' not found. Available parameters are [Collection,list]


在使用foreach語句時會經常報Parameter ‘ordersList’ not found. Available parameters are [Collection,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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM