MyBatis動態SQL的List傳值錯誤
阿新 • • 發佈:2021-01-02
動態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");
}
}