mybatis/mybatis-3 · error · BuilderException
Error creating SqlSource for SqlProvider. Method '{methodNam
Error message
Error creating SqlSource for SqlProvider. Method '{methodName}' not found in SqlProvider '{providerTypeName}'. What it means
Error "Error creating SqlSource for SqlProvider. Method '{methodName}' not found in SqlProvider '{providerTypeName}'." thrown in mybatis/mybatis-3.
Source
Thrown at src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java:137
for (Method m : this.providerType.getMethods()) {
if (candidateProviderMethodName.equals(m.getName())
&& CharSequence.class.isAssignableFrom(m.getReturnType())) {
if (candidateProviderMethod != null) {
throw new BuilderException("Error creating SqlSource for SqlProvider. Method '"
+ candidateProviderMethodName + "' is found multiple in SqlProvider '" + this.providerType.getName()
+ "'. Sql provider method can not overload.");
}
candidateProviderMethod = m;
}
}
}
} catch (BuilderException e) {
throw e;
} catch (Exception e) {
throw new BuilderException("Error creating SqlSource for SqlProvider. Cause: " + e, e);
}
if (candidateProviderMethod == null) {
throw new BuilderException("Error creating SqlSource for SqlProvider. Method '" + candidateProviderMethodName
+ "' not found in SqlProvider '" + this.providerType.getName() + "'.");
}
this.providerMethod = candidateProviderMethod;
this.paramNameResolver = new ParamNameResolver(configuration, this.providerMethod, mapperType);
this.providerMethodParameterTypes = this.providerMethod.getParameterTypes();
ProviderContext candidateProviderContext = null;
Integer candidateProviderContextIndex = null;
for (int i = 0; i < this.providerMethodParameterTypes.length; i++) {
Class<?> parameterType = this.providerMethodParameterTypes[i];
if (parameterType == ProviderContext.class) {
if (candidateProviderContext != null) {
throw new BuilderException(
"Error creating SqlSource for SqlProvider. ProviderContext found multiple in SqlProvider method ("
+ this.providerType.getName() + "." + providerMethod.getName()
+ "). ProviderContext can not define multiple in SqlProvider method argument.");
}
candidateProviderContext = new ProviderContext(mapperType, mapperMethod, configuration.getDatabaseId());View on GitHub (pinned to 008069adb1)
Solutions
- Add the reported method to the SqlProvider class, or fix the method name referenced in the provider annotation.
- If the provider method should be resolved by name convention, rename it to match the mapper method name.
When it happens
Trigger: Thrown at src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java:137 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of mybatis/mybatis-3@008069adb1 (2026-08-14).
Data as JSON: /api/errors/2e11cad557e09ead.
Report an issue: GitHub.