if (args == null || paramCount == 0) {
return null;
} else if (!hasNamedParameters && paramCount == 1) {
return args[paramPositions.get(0)];
} else {
Map
for (int i = 0; i < paramCount; i++) {
param.put(paramNames.get(i), args[paramPositions.get(i)]);
}
return param;
}
这里很明白的写着如果有多个参数的话,就会新建一个map,并用paramNames中的string做key。
再看看paramNames的生成过程,在setupMethodSignature方法中。
final Class[] argTypes = method.getParameterTypes();
for (int i = 0; i < argTypes.length; i++) {
if (RowBounds.class.isAssignableFrom(argTypes[i])) {
rowBoundsIndex = i;
} else {
String paramName = String.valueOf(paramPositions.size());
paramName = getParamNameFromAnnotation(i, paramName);
paramNames.add(paramName);
paramPositions.add(i);
}
}
明显的可以看到如果有多个参数的话,就用paramName加入到paramNames中。这个paramName默认就用参数的序号(从0开始),如果有Param注解的话,就使用注解的名称。
所以很明显了。mybatis是支持多个参数的。如果什么都不做的话,就可以使用#{0},#{1}来使用多个参数。如果想好看一些,就使用Param注解给参数一个好听的名字。
当然这是基于mybatis-spring集成的情况下。其它情况下没有细看了。
1 条评论:
感谢分享。不错。
发表评论