Skip to content

Commit a854fa8

Browse files
committed
add a cache for genericParamName
1 parent e836410 commit a854fa8

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/main/java/org/apache/ibatis/reflection/ParamNameResolver.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ public class ParamNameResolver {
3535

3636
public static final String GENERIC_NAME_PREFIX = "param";
3737

38+
public static final String[] GENERIC_NAME_CACHE = new String[255];
39+
40+
static {
41+
// the max length of java method parameter list is 255
42+
for (int i = 0; i < 255; i++) {
43+
GENERIC_NAME_CACHE[i] = GENERIC_NAME_PREFIX + (i + 1);
44+
}
45+
}
46+
3847
private final boolean useActualParamName;
3948

4049
/**
@@ -132,7 +141,7 @@ public Object getNamedParams(Object[] args) {
132141
for (Map.Entry<Integer, String> entry : names.entrySet()) {
133142
param.put(entry.getValue(), args[entry.getKey()]);
134143
// add generic param names (param1, param2, ...)
135-
final String genericParamName = GENERIC_NAME_PREFIX + (i + 1);
144+
final String genericParamName = GENERIC_NAME_CACHE[i];
136145
// ensure not to overwrite parameter named with @Param
137146
if (!names.containsValue(genericParamName)) {
138147
param.put(genericParamName, args[entry.getKey()]);

0 commit comments

Comments
 (0)