mybatis中SQL接受的参数分为:(1)基本类型(2)对象(组合对象)(3)List(4)数组(5)Map
无论传哪种参数给mybatis,他都会将参数放在一个Map中:
如果传入基本类型:变量名作为key,变量值作为value 此时生成的map只有一个元素。
如果传入对象: 对象的属性名作为key,属性值作为value,
如果传入List: "list"作为key,这个List是value (这类参数可以迭代,利用标签实现循环)
如果传入数组: "array"作为key,数组作为value(同上)
传入List<T>,Array<T>时,parameterType可以写成list,写他们泛型中的类型T也可以。
如果传入Map: 键值不变。
通用法则:parameterType 在不知道写什么时,写成"map"肯定不会出错
但是对于resultType而言,就不一样了,
如果查询返回的一个List<User>,或者Array<User> ,或者单个User对象,resultType都因该写成user,
但是可以用list或array接受查询结果。
如果查询结果是指定的字段,例如 select name, gender from user; resultType可以写成map,参数会自动封装,
通过map.get(name)取值即可。
单独传入list或array时,foreach中的collection必须是list或array,不不管变量的具体名称是什么
MAP中有list或array时,foreach中的collection必须是具体list或array的变量名。
JAVA对象中有list或array时,foreach中的collection必须是具体list或array的变量名
https://blog.csdn.net/weixin_38303684/article/details/78886375