{"record":{"id":"5cae6a92e1db2bb1","repo":"mybatis/mybatis-3","slug":"could-not-find-parameter-map-parametermapname","errorCode":null,"errorMessage":"Could not find parameter map {parameterMapName}","messagePattern":"Could not find parameter map (.+?)","errorType":"exception","errorClass":"IncompleteElementException","httpStatus":null,"severity":"error","filePath":"src/main/java/org/apache/ibatis/builder/MapperBuilderAssistant.java","lineNumber":307,"sourceCode":"      LanguageDriver lang) {\n    return addMappedStatement(id, sqlSource, statementType, sqlCommandType, fetchSize, timeout, parameterMap,\n        parameterType, resultMap, resultType, resultSetType, flushCache, useCache, resultOrdered, keyGenerator,\n        keyProperty, keyColumn, databaseId, lang, null);\n  }\n\n  private <T> T valueOrDefault(T value, T defaultValue) {\n    return value == null ? defaultValue : value;\n  }\n\n  private ParameterMap getStatementParameterMap(String parameterMapName, Class<?> parameterTypeClass,\n      String statementId) {\n    parameterMapName = applyCurrentNamespace(parameterMapName, true);\n    ParameterMap parameterMap = null;\n    if (parameterMapName != null) {\n      try {\n        parameterMap = configuration.getParameterMap(parameterMapName);\n      } catch (IllegalArgumentException e) {\n        throw new IncompleteElementException(\"Could not find parameter map \" + parameterMapName, e);\n      }\n    } else if (parameterTypeClass != null) {\n      parameterMap = ParameterMap.buildEmpty(statementId + \"-Inline\", parameterTypeClass);\n    }\n    return parameterMap;\n  }\n\n  private List<ResultMap> getStatementResultMaps(String resultMap, Class<?> resultType, String statementId) {\n    resultMap = applyCurrentNamespace(resultMap, true);\n\n    List<ResultMap> resultMaps = new ArrayList<>();\n    if (resultMap != null) {\n      String[] resultMapNames = resultMap.split(\",\");\n      for (String resultMapName : resultMapNames) {\n        try {\n          resultMaps.add(configuration.getResultMap(resultMapName.trim()));\n        } catch (IllegalArgumentException e) {\n          throw new IncompleteElementException(","sourceCodeStart":289,"sourceCodeEnd":325,"githubUrl":"https://github.com/mybatis/mybatis-3/blob/008069adb1b089579b5dcba87ee591908b263274/src/main/java/org/apache/ibatis/builder/MapperBuilderAssistant.java#L289-L325","documentation":"Thrown by getStatementParameterMap() when configuration.getParameterMap() raises IllegalArgumentException: a statement references a <parameterMap> id that is not registered. It is an IncompleteElementException so the statement is retried later; it is fatal if the parameter map never appears. Note parameterMap is a legacy construct predating #{} inline parameters.","triggerScenarios":"<select parameterMap=\"someMap\"> where no <parameterMap id=\"someMap\"> exists (or exists in a mapper not yet parsed / not registered).","commonSituations":"Very old tutorials or legacy codebases using parameterMap; typo in the id; mapper containing the parameterMap not scanned by Spring's mapperLocations; migration from parameterMap to #{} leaving dangling references.","solutions":["Prefer migrating the statement to inline #{} parameters and delete the parameterMap attribute — parameterMap is deprecated","Otherwise define the missing <parameterMap id=\"...\"> element with matching parameter mappings","Verify the id spelling and that the defining mapper is registered/loaded"],"exampleFix":"<!-- before -->\n<select id=\"find\" parameterMap=\"userParams\">\n  <parameterMap id=\"userParams\">...</parameterMap>\n<!-- after -->\n<select id=\"find\" parameterType=\"User\">\n  SELECT * FROM users WHERE id = #{id}\n</select>","handlingStrategy":"validation","validationCode":"// Fail fast on legacy parameterMap usage: reject it at lint time\nNodeList pm = mapperXml.getElementsByTagName(\"parameterMap\");\nNodeList refs = mapperXml.getElementsByTagName(\"select\");\nif (pm.getLength() > 0) {\n  throw new IllegalStateException(\"parameterMap is deprecated — migrate '\" + resource + \"' to #{} inline parameters\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Migrate away from parameterMap entirely — it is legacy and unsupported in modern MyBatis docs","If kept, add a config-load unit test verifying every parameterMap reference resolves"],"tags":["mybatis","parametermap","legacy","incomplete-element"],"backgroundTag":null,"analyzedSha":"008069adb1b089579b5dcba87ee591908b263274","analyzedAt":"2026-08-14T13:07:10.264Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}