你所不知的 mybatis中的 parameterType和 resultType

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

http://ydlmlh.iteye.com/blog/2269869

猜你喜欢

转载自blog.csdn.net/hlz5857475/article/details/81841933