1. 程式人生 > 資料庫 >MyBatis動態SQL的List傳值錯誤

MyBatis動態SQL的List傳值錯誤

動態SQL中,有時要對批量資料進行處理,難免會使用list做為引數

@SelectProvider(type = UserDaoProvider.class, method = "find")
public List<Map> find(List list);

class UserDaoProvider {
    public String find(List list) {}
}

這是一個最簡單的list傳參,但是在執行時會報傳參錯誤。這是mybatis內部機制造成的,其引數需要是key/value結構,當遇到這裡不是key/value結構的list時,mybatis會自己把它轉換成key/value結構,key就是他的名字"list",value就是他的值List,要正確傳參需要使用key/value結構的map,如下

@SelectProvider(type = UserDaoProvider.class, method = "find")
public List<Map> find(List list);

class UserDaoProvider {
    public String find(Map map) {
        List list = (List) map.get("list");
    }
}